ZfcTwig不加载配置并在启动时失败
嗨,我对ZF2比较新,所以这可能是我犯的一个非常简单的错误。
问题
当加载ZfcTwig
模块时,我得到一个异常
致命错误:在/ www / ZendFramework2 / library / Zend / ServiceManager / ServiceManager中,带有消息“Zend ServiceManager ServiceManager :: get无法获取或为Twig_Environment创建实例”的未捕获异常'Zend ServiceManager Exception ServiceNotFoundException' 555行的php
此异常引发到ZfcTwigModule.php
的onBootstrap
函数中:
<?php
class Module implements
BootstrapListenerInterface,
ConfigProviderInterface
{
public function onBootstrap(EventInterface $e)
{
/** @var ZendMvcMvcEvent $e*/
$application = $e->getApplication();
$serviceManager = $application->getServiceManager();
$environment = $serviceManager->get('Twig_Environment'); // throws the exception
//...
}
public function getConfig(){ return [/*...*/]; } // never called
}
我没有得到的是为什么在加载配置之前调用bootstrap。 'Twig_Environment'
服务在ZfcTwig模块的配置中进行配置,但是在调用onBootstrap时,该配置尚未加载。
建立
ZF2加载器通过ZF2_PATH
环境变量。 不使用作曲家自动装载机。
在application.config.php
我设置了一个额外的模块路径'/global/vendor'
给我的可重用模块系统库。 我没有使用项目本地供应商文件夹。
从'/global/vendor/ZfcTwig'
我加载模块ZfcTwig
(链接)以获得ZF2中的Twig模板引擎支持。
由于这依赖于树枝库,我将树枝放到'/global/vendor/twig'
要为ZfcTwig模块和树枝库类启用自动加载,我通过实现AutoloaderProviderInterface
并为枝和ZfcTwig添加了配置,更改了ZfcTwig的Module.php。
<?php
class Module implements
BootstrapListenerInterface,
AutoloaderProviderInterface,
ConfigProviderInterface
{
/**
* Autoloading the twig library and this modules classes
* @return array
*/
public function getAutoloaderConfig()
{
$pathToTwigLib = dirname(dirname(dirname(__DIR__))) . '/twig/twig/lib/Twig';
return array(
'ZendLoaderStandardAutoloader' => array(
'namespaces' => array(
__NAMESPACE__ => __DIR__,
),
'prefixes' => array(
'Twig_' => $pathToTwigLib,
),
),
);
}
在application.config.php
我加载模块['Application','twig','ZfcTwig']
自动加载小枝正在工作(至少我可以在ZfcTwig和其他控制器的引导中使用new
实例化Twig_Environment
)。
已启用配置缓存
问题正是我在想我自己的地方。 配置需要在自举完成之前加载。 然而这正是ZF2所做的,除非像我一样,你已经启用了配置缓存。
<?php
// config/applicaiton.config.php
return array(
'module_listener_options' => array(
// this prevents the call to getConfig on Modules
// that implement the ConfigProviderInterface
// default: false
'config_cache_enabled' => true,
)
);
链接地址: http://www.djcxy.com/p/67781.html