0

最新バージョンで zf2 を更新しましたが、次のエラーが表示されます: http://jsfiddle.net/8Ft6d/

翻訳のためにいくつかの必須パラメータが追加されましたか?

これは私の翻訳者の設定です:

'translator' => array(
    'locale' => 'it_IT',
    'translation_file_patterns' => array(
        array(
            'type'     => 'gettext',
            'base_dir' => __DIR__ . '/../language',
            'pattern'  => '%s.mo',
        ),
    ),
),
'service_manager' => array(
    'aliases' => array(
        'translator' => 'MvcTranslator',
    ),
),

これは、Module.php::onBootstrap() 内で呼び出すものです。

$translator = $serviceManager->get('translator’);

ありがとう

4

2 に答える 2

0

今朝、2.2.6 から 2.3.0 にアップグレードした後、私自身も同じ問題を抱えていました。

ZF2.3.0 にはバグがあり、MvcTranslator のインスタンスを作成しようとすると Di モジュールが失敗します (参照: https://github.com/zendframework/zf2/pull/5959、@Ocramius と noopable が思いついた場所)ソリューション)。

修正がフレームワークに展開されるまで、次のコードを変更する必要がありますZend\ServiceManager\Di\DiAbstractServiceFactory

public function canCreateServiceWithName(ServiceLocatorInterface $serviceLocator, $name, $requestedName)
{
    return $this->instanceManager->hasSharedInstance($requestedName)
        || $this->instanceManager->hasAlias($requestedName)
        || $this->instanceManager->hasConfig($requestedName)
        || $this->instanceManager->hasTypePreferences($requestedName)
        || $this->definitions->hasClass($requestedName);
}

に:

public function canCreateServiceWithName(ServiceLocatorInterface $serviceLocator, $name, $requestedName)
{
    if ($this->instanceManager->hasSharedInstance($requestedName)
        || $this->instanceManager->hasAlias($requestedName)
        || $this->instanceManager->hasConfig($requestedName)
        || $this->instanceManager->hasTypePreferences($requestedName)
    ) {
        return true;
    }

    if (! $this->definitions->hasClass($requestedName) || interface_exists($requestedName)) {
        return false;
    }

    return true;
}
于 2014-03-27T12:28:47.440 に答える