Zend Framework 2设置了全局模块变量

时间:2013-08-28 18:45:46

标签: php view zend-framework2 global-variables

我想这样做变量“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中的用户......

有关为何发生这种情况的任何帮助?我做错了吗?

3 个答案:

答案 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