动态添加页面到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大概;)),否则这将是相当昂贵的每一页上加载。


















































这正是我所期待的 - 对于一个真正明显的例子感谢。 干杯。 Ğ
好贴! 我开始有些麻烦,在仿真模型类。 任何线索为何申请/模型类不是从引导可用? 你的类是所谓的'新的新闻()',而不是我想添加如何从一个模型类的导航树中展开。 如果你有一个想法,请让我知道! ;)
我的模型进行编辑后,它在代码的正确名称是Pro_News并拾起,自动加载了。
猜你不是使用模块? 但如果这样你的模式应该是要求采埃孚_新闻默认情况下接了(我不使用这个系统我自己)。
我建议你检查包括从你的bootstrap方法的路径,看看它是否包含“应用程序/模式”或包含文件手动。
嗯,我使用的模块,我的坏。 但是,你应该建议自动装填工作? 嗯,我把它挖一个深一点。 目前,我使用的BaseControllers,这是不是真的表现友好的调用AddPage功能...呵呵。 感谢您的回复。
确保你的模块模型是正确命名 _新闻(例如),它应该拿起使用自动加载。