是否可以在Module.php中创建变量甚至共享对象(如DB适配器),以便在所有视图控制器中使用? (Zend Framework 2)
例如:
class Module
{
public function onBootstrap(MvcEvent $e)
{
$moduleConfig = $e->getServiceManager()->get('Config')
}
}
在控制器中,以某种方式使用:
进行访问$this->moduleConfig['db']
在上面我知道这只是数据库适配器的配置数组,但它怎么会工作?
我看到可以在控制器操作中执行此操作:
$config = $this->getServiceLocator()->get('Config')
$dba = new DbAdapter($config['db']);
我不想在每个需要配置的地方都这样做。我怎么能这样做:$ this-> config ??所以它适用于所有行动。更好的是,如何在整个模块中做到这一点?我知道我这一切都错了,但在ZF1中我们有Zend_Registry :: get()这样的简单事情。我正在阅读文档和各种各样的文章,但总是有一些假设,我只是迷路了。所以我真正想要的是: A)全球可访问的配置项, B)全局可访问的数据库适配器
我只想在我的控制器中调用$ this-> db或$ this-> config->项。这可能吗?我知道我错过了一些非常简单的事情。
我也尝试使用$ this-> getServiceLocator() - > get('Config');在我的__construct中设置$ this-> config但我知道服务定位器在构造期间尚不可用。我尝试在模块的onBootstrap中设置preDispatch,但我似乎无法将这些项目放入我的控制器中。
仅供参考,我确实在我的global.php中有这个(不,它没有留在那里,只是例子):
'db' => array(
'driver' => 'Pdo',
'dsn' => 'mysql:dbname=mydb;host=localhost;',
'username' => 'root',
'password' => '',
'driver_options' => array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''
),
),
我可以使用getServiceLocator()访问任何操作中的该项和其他项。我希望这些项目可用作我的控制器属性,如$ this-> config-> item。
我感谢任何指导!谢谢!