Model view controller Zend Framework 2:修改控制器中layout.pthml的详细信息
当我研究Model view controller Zend Framework 2:修改控制器中layout.pthml的详细信息,model-view-controller,layout,zend-framework2,Model View Controller,Layout,Zend Framework2,当我研究Zend Framework 2的框架应用程序时,我想在页面的右上方添加一个标签,显示登录的用户名。但是,我对layout.pthml中定义的导航栏的代码感到困惑,控制器如何与layout.phtml通信以修改它 提前谢谢 此外,当用户未使用帮助器登录时,我需要页面右上角的登录表单。但我不知道如何使用帮助器添加表单,我应该怎么做?从控制器可以使用名为“布局”的控制器插件设置变量: $this->layout()->username = “some value”; 然后在la
Zend Framework 2
的框架应用程序时,我想在页面的右上方添加一个标签,显示登录的用户名。但是,我对layout.pthml
中定义的导航栏的代码感到困惑,控制器如何与layout.phtml
通信以修改它
提前谢谢
此外,当用户未使用帮助器登录时,我需要页面右上角的登录表单。但我不知道如何使用帮助器添加表单,我应该怎么做?从控制器可以使用名为“布局”的控制器插件设置变量:
$this->layout()->username = “some value”;
然后在layout.phtml中,您应该能够执行以下操作:
<?php echo $this->username; ?>
如果您查看Zend\Mvc\Controller\Plugin\Layout
,您将看到不带参数的\uu invoke
方法将返回ViewModel
的一个实例,这就是为什么这样做的原因。如果您想在module.php上定义它,请使用module.php
public function onBootstrap(MvcEvent $e)
{
....
$e->getViewModel()->setVariable('username', 'some_value');
}
在layout.phtml上
echo $layout->username;
在module.php中,您可以这样做
public function onBootstrap(MvcEvent $e)
{
....
$e->getViewModel()->setVariable('username', $username);
}
在你的布局中你可以做到
echo $this->layout()->username;
还要检查您是否使用了MvcEvent类。为什么不使用session变量来保存用户名?当然,将用户名推送到控制器中的session中,然后在布局中使用该值。