脚本宝典收集整理的这篇文章主要介绍了zend-framework – Zend Framework – 定义导航菜单的正确方法,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用布局,我已将所有模板代码放在我的default.phtML布局文件中.我面临的问题是动作导航菜单.由于此菜单的HTML代码位于default.phtml中,我需要根据被调用的控制器更改其内容.
我不确定这是否是正确的做法.但在我的default.phtml中,我正在检查控制器名称并相应地显示菜单.这是我正在使用的代码.
<?PHP if(Zend_Controller_Front::getInstance()->getRequest()->getControllerName() == 'ITem'): ?> <!-- Action Navigation Menu --> <div class="statsRow"> <div class="wrapPEr"> <a href="#"><img src="/images/icons/dark/add.png" alt="" class="icon"><span>New item</span></a> <a href="#"><img src="/images/icons/dark/cd.png" alt="" class="icon"><span>Publish / Unpublish item</span></a> <a href="#"><img src="/images/icons/dark/trash.png" alt="" class="icon"><span>Delete item</span></a> </div> </div> <div class="line"></div> <?PHP endif; ?>
// in each controller where you want your "action navigation menu" public function PReDispatch() { $this->_helper->navigation()->renderActionNavigation(); }
当然,只有需要此Action导航菜单的控制器才会使用此方法.
此Action Helper将基本获取当前视图对象,创建占位符并呈现部分,如下所示:
// in your library/My/Controller/Action/Helper class My_Controller_Action_Helper_Navigation extends Zend_Controller_Action_Helper_Abstract { private $_view = null; public function direct() { $this->_view = $view = Zend_Layout::getMvcInstance()->getView(); $this->_view->placeholder('action-navigation'); return $this; } public function renderActionNavigation() { $this->_view->render('partials/_action-navigation.phtml'); } }
如果您不使用库,只需将此代码放在/ views / helpers /中,并重命名Zend_View_Helper_Navigation类.
然后部分将负责使用占位符渲染您的subMenu:
// in /view/scripts/partials/_action-navigation.phtml <?PHP $this->placeholder('action-navigation')->captureStart() ?> <?PHP $options = array('onlyActiveBranch' => true); ?> <?= $this->navigation()->menu()->renderMenu(Zend_Registry::get('nav.action-navigation'),$options); // here I assume that you've Stored your Navigation container in the registry ?> <?PHP $this->placeholder('action-navigation')->captureEnd() ?>
此外,使用带有选项onlyActiveBranch设置为true的navigation view helper method renderMenu()
渲染菜单将允许您仅渲染活动分支,其中每个分支将对应于您的控制器.
最后,在您的布局中,您将拥有:
// in your layout file (usually named layout.phtml) <?= $this->placeholder('action-navigation'); ?>
如果您选择在注册表中注册Zend_Navigation容器,可以通过以下方式在引导程序中完成:
// in your bootstrap.PHP protected function _initNavigation() { $config = new Zend_Config_XMl(APPLICATION_PATH . '/configs/navigation.xml','nav'); $container = new Zend_Navigation($config); Zend_Registry::set('nav.action-navigation',$container); }
有关容器的更多信息,请参见refer to this page.另外,如果您不熟悉占位符,请参阅here is a good practical example有关如何使用它们的信息.
以上是脚本宝典为你收集整理的zend-framework – Zend Framework – 定义导航菜单的正确方法全部内容,希望文章能够帮你解决zend-framework – Zend Framework – 定义导航菜单的正确方法所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。