我想这样做变量“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中的用户......
有关为何发生这种情况的任何帮助?我做错了吗?
答案 0 :(得分:10)
使用 Config-Variables 在整个应用程序范围内提供服务。
// 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'];
希望它足够清楚。
答案 1 :(得分:0)
您是否尝试过$ this->用户,我认为这应该可行。
答案 2 :(得分:0)
在Zend Framework 2中,有一个名为“Identity”的视图助手,可在所有视图中使用。它要求您在config.module.php中注册服务管理器,如:
.Markme {
color: red;
}
然后在视图中,您可以像这样访问您注册的“用户”:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table border="1">
<tr>
<td class="subject">subject 1</td>
<td class="date">22/07/2015 - 08:00</td>
<td class="groups">1XX10XX086,1XX10XX087,1XX09XX088</td>
</tr>
<tr>
<td class="subject">subject </td>
<td class="date">22/07/2015 - 09:00</td>
<td class="groups">1XX10XX086,1XX10XX087,1XX09XX088</td>
</tr>
<tr>
<td class="subject">subject 3</td>
<td class="date">22/07/2015 - 08:00</td>
<td class="groups">1XX10XX096,1XX10XX086,1XX09XX098</td>
</tr>
<tr>
<td class="subject">subject 4</td>
<td class="date">22/07/2015 - 10:00</td>
<td class="groups">1XX10XX096,1XX10XX086,1XX09XX098</td>
</tr>
<tr>
<td class="subject">subject 5</td>
<td class="date">22/07/2015 - 08:00</td>
<td class="groups">1XX10XX106,1XX10XX107,1XX09XX108</td>
</tr>
</table>
将返回您的用户。这是link to the zend documentation