动态添加页面到Zend_Navigation容器在运行时
在A,继续在我的最后一篇文章关于Zend_Navigation / sitemap.xml的行动路线的要求定制的控制器 ,这篇文章是关于dymnamically添加页面到一个脚本在运行时执行Zend_Navigation容器/。
它的一切都很好指定INI或网页中的xml文件,但在某些时候你将不得不改变你的网站网页,网站地图,你想作为一个菜单的一部分,或将径包含在您的面包屑。 因此,我们需要做的就是添加网页到我们在运行时Zend_Navigation容器。 这个例子将在增加新闻,博客,或网页评论等
在这个例子中我将添加一些新闻职位,以我的静态定义的INI配置。 为了让我的新闻文章网页的配置我已经使用了类,返回一个数组的格式如下:
$ pagesToAdd =阵列( 0 =>“ 阵列( '标签'=>“假新闻故事#5 ...', '模块'=>“www的, '路线'=>“www的索引', '行动'=>“'查看', '控制器'=>“新闻', '参数'=>“阵列( '身份证'=>“'5 -伪新闻故事 - 5') ), 1 =>“ 阵列(/ *更多详情页* /) );
正如你会注意到,函数返回一个数组,其中包含从而弥补了配置为Zend_Navigation_Page_Mvc数组。 因此,在新的Zend_Navigation页循环数组可以创建从配置阵列。 接下来的事情作为循环的一部分,是添加在正确的位置的网页(使用或者页面可以大量增加 - ()方法> addPages)。
要做到这一点,找到你的网页要添加子页面和简单的添加网页。 在这种情况下,我使用了下面的代码找到我的网页:
$容器> findOneBy('标签','最新消息') - >“调用AddPage($页); 我在引导整体导航初始化因此看起来是这样的:
/ ** *用于处理顶级导航 * * @返回Zend_Navigation * / 保护功能_initNavigation() { $这个->引导('布局'); 这个布局= $ $ ->的getResource('布局'); = $ $视图布局-> getView(); 新Zend_Config_Ini配置= $( APPLICATION_PATH。 '/ configs / navigation.ini',APPLICATION_ENV); 新Zend_Navigation集装箱= $($配置->“默认); / /现在增加近25新闻报道 $新闻=新的新闻(); 页= $ $新闻> getNavigationEntries(); 的foreach($美元页页){ 新Zend_Navigation_Page_Mvc页= $($页); $容器> findOneBy('标签','最新消息') - >“调用AddPage($页); } $视图->“导航($容器); }
在东西需要添加一些缓存的形式(使用调用Zend_Cache大概;)),否则这将是相当昂贵的每一页上加载。


















































这正是我所期待的 - 对于一个真正明显的例子感谢。 干杯。 Ğ