我想让变量"user"对所有模块都是全局的,所以我添加了这个代码
public function onBootstrap(MvcEvent $e)
{
$eventManager = $e->getApplication()->getEventManager();
$e->getViewModel()->setVariable('user',$e->getApplication()->getServiceManager()->get('auth_service')->getIdentity());
}
它对布局文件很好,这意味着如果我在layout.phtml中执行var_dump($user),它将输出预期的结果,尽管在中执行相同结果的视图中
注意:未定义的变量:C:\webserver\apache\htdocs中的user。。。
为什么会发生这种情况,有什么帮助吗?我做错什么了吗?
使用配置变量使stuff在应用程序范围内可用。
// module.config.php
return array(
'someVariable' => 'someValue',
// all the other stuff
);
你所要做的就是访问配置。当然,访问权限因您尝试访问的位置而异,但最终是这样做的:
// Example for being inside any of your Controllers
$servoceLocator = $this->getServiceLocator();
$config = $serviceLocator->get('config');
$myValue = $config['someVariable'];
希望它足够清楚。
您在视图中尝试过$this->用户吗?我认为这应该有效。
在Zend Framework 2中,有一个名为"Identity"的内置视图帮助程序,在所有视图中都可用。它要求您在config.module.php中注册服务管理器,如下所示:
'service_manager' => array(
...
'invokables' => array(
...
'ZendAuthenticationAuthenticationService' => 'ZendAuthenticationAuthenticationService',
),
)
然后在视图中,您可以访问您的注册"用户",如下所示:
<?php echo $this->identity()?>
这将返回您的用户。以下是zend文档