2012-09-23 46 views
6

當我研究Zend Framework 2的框架應用程序時,我想在頁面右上角添加一個標籤以顯示已登錄的UserName。但是,我很困惑在layout.pthml中定義的導航欄的代碼,控制器如何與layout.phtml通信來修改它?Zend Framework 2:修改控制器中的layout.pthml的詳細信息

在此先感謝!

此外,當用戶未使用助手登錄時,我想要一個登錄表單右上角的頁面。但我不知道如何使用助手添加表單,我應該怎麼做?

+0

爲什麼不用會話變量來保存用戶名? –

+0

我想「顯示」用戶名 – zc1415926

+0

當然,將用戶名推入控制器的會話中,然後在佈局中使用該值。 –

回答

7

從控制器,你可以使用一個叫做「佈局」控制器插件設置一個變量:

​​

然後在layout.phtml你應該能夠做到:

<?php echo $this->username; ?> 

如果您看看Zend\Mvc\Controller\Plugin\Layout,你會看到沒有參數的__invoke方法將返回ViewModel的實例,因此它可以工作。

1

如果你想將它定義模塊範圍內,您Module.php

public function onBootstrap(MvcEvent $e) 
{ 
    .... 
    $e->getViewModel()->setVariable('username', 'some_value'); 
} 

,並在您layout.phtml

echo $layout->username; 
0

在module.php u能做到這一點

public function onBootstrap(MvcEvent $e) 
{ 
    .... 
    $e->getViewModel()->setVariable('username', $username); 
} 

而在你的佈局中你可以做

echo $this->layout()->username; 

同時檢查你是否使用過MvcEvent類。