目前正试图为优质高效的ZF网站提出“最佳实践”。我想要做的只是生成侧边栏的数据。
在一些相关问题和其他来源中,采用的方法是从布局的侧边栏部分调用另一个操作,或者将侧边栏操作添加到actionstack帮助程序。这些似乎非常优雅,但是对调度循环添加了额外的请求,这是非常差的性能。
我见过人们建议视图助手不仅仅是格式化...这在语义上看起来很差。有没有办法在布局到达之前自动生成侧边栏数据?
答案 0 :(得分:2)
嗨,有很多不同的方法。我会使用FrontController插件将侧边栏内容发送到布局脚本。像这样:
/**
* layout script
*/
<?php echo $this->sidebar; ?>
/**
* Plugin
*/
class My_Plugin_Sidebar extends Zend_Controller_Plugin_Abstract {
/**
* preDispatch()
*
* @return void
*/
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
$layout = Zend_Layout::getMvcInstance();
$nav = new My_Model_Menu();
$entries = $nav->getEntries();
$html = '<h2> my sidebar </h2>';
foreach ($entries as $e) {
$html .= '<li>' . $e . '</li>';
}
$layout->sidebar = $html;
}
}
答案 1 :(得分:2)
如果您使用侧边栏表示导航,请查看Zend_Navigation的相对较新的组件shipped with a view helper。