在zend中实现动态侧边栏而不调用额外的操作

时间:2009-11-30 02:03:11

标签: php zend-framework

目前正试图为优质高效的ZF网站提出“最佳实践”。我想要做的只是生成侧边栏的数据。

在一些相关问题和其他来源中,采用的方法是从布局的侧边栏部分调用另一个操作,或者将侧边栏操作添加到actionstack帮助程序。这些似乎非常优雅,但是对调度循环添加了额外的请求,这是非常差的性能。

我见过人们建议视图助手不仅仅是格式化...这在语义上看起来很差。有没有办法在布局到达之前自动生成侧边栏数据?

2 个答案:

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