Php Zend 2:我应该把这个更新模块的方法放在哪里;导航条
我知道有哪些选项可用于在每个模块的基础上自动插入导航栏(模板) 根据其中一个建议,我在Myapp/Module/Mymodule/Module.php中添加了一个视图变量,它是模板的路径Php Zend 2:我应该把这个更新模块的方法放在哪里;导航条,php,templates,zend-framework2,Php,Templates,Zend Framework2,我知道有哪些选项可用于在每个模块的基础上自动插入导航栏(模板) 根据其中一个建议,我在Myapp/Module/Mymodule/Module.php中添加了一个视图变量,它是模板的路径 public function onBootstrap($e) { $viewModel = $e->getApplication()->getMvcEvent()->getViewModel(); $viewModel->subNav = 'mymodule/mymod
public function onBootstrap($e) {
$viewModel = $e->getApplication()->getMvcEvent()->getViewModel();
$viewModel->subNav = 'mymodule/mymodule/subNav';
}
然后在Application/view/layout/layout.phtml中检查是否存在此变量并显示它:
<?php if($this->subNav) : ?>
<nav class="navbar navbar-inverse" role="navigation">
<?php echo $this->partial($this->subNav); ?>
</nav>
<?php endif ?>
这与我希望的完全一样,但现在我希望从数据库传递模板动态数据
所以我的问题是:在Module.php中这样做可以吗?在onBootstrap()中,我想调用我的数据模型来访问我的数据库,并将结果存储在视图变量中。这是对Module.php的滥用吗?这种操作应该在控制器中完成,但是我希望这个模板能够自动注入,而不需要控制器知道。我是MVC和zend的新手,希望确保我没有违反一些基本的设计原则。创建一个自定义视图帮助器,在其中加载数据,渲染视图并在布局中使用它
namespace Application\View\Helper;
use Zend\View\Helper\AbstractHelper;
class MyNav extends AbstractHelper{
public function __invoke(){
//load your data
return $this->view->render('my nav view script',array('data'=>$data))
}
}
在您的模块配置文件中
'view_helpers' => array(
'invokables' => array(
'mynav' => 'Application\View\Helper\MyNav',
),
),
布局中
$this->mynav();