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’); 

Благодаря

ответ

1

Что происходит здесь что, скорее всего, DiAbstractServiceFactory пинает перед абстрактной фабрикой, которая отвечает за выборка MvcTransator экземпляра.

Вам, вероятно, придется переключить порядок использования абстрактных фабрик или удалить конфигурацию 'di' из ваших модулей или конфигурацию автозагрузки, так как ее наличие will automatically cause addition of the DiAbstractServiceFactory to the ServiceManager.

0

У меня была такая же проблема сегодня утром после обновления с 2.2.6 до 2.3.0.

В ZF2.3.0 есть ошибка, из-за которой модуль Di терпит неудачу при попытке создать экземпляр MvcTranslator (см.: 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; 
} 
Смежные вопросы