动态添加页面到Zend_Navigation容器在运行时

史蒂芬劳埃德沃特金斯 ,星期四2010年1月7日下午10时50分

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

一对“在运行时动态添加页面Zend_Navigation集装箱”

  1. 文先生 说:

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

给一个答复













全景主题 Themocracy

现在4访客在线
2位客人,2机器人,0位会员
最大游客今日:14日上午03:51联合技术
本月:26日2011年7月5日上午12点35分联合技术
今年:130 28-03-2011下午10时40联合技术
所有时间:130 28-03-2011下午10时40联合技术