我在最新版本上更新了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’);
由于
答案 0 :(得分:1)
这里发生的事情很可能是DiAbstractServiceFactory
在一个负责获取MvcTransator
实例的抽象工厂之前就已经开始了。
您可能必须切换抽象工厂的使用顺序,或者从模块或自动加载配置中删除'di'
配置,因为它的存在will automatically cause addition of the DiAbstractServiceFactory
to the ServiceManager
。
答案 1 :(得分: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;
}