0

我目前通过 XML 文件使用 zend_navigation。

但是,我需要在控制器中覆盖以前的面包屑作为其动态父级。

这可能吗?在我看来,zend_navigation 是相当静态的,而且 zend 文档一直在超时。

谢谢


我放了:

    public function addAction() {

        $this->view->navigation()->addPage(array(
            'type' => 'uri',
            'label' => 'New page')
        );

在我的控制器中,但该页面没有显示crumbbar。

有任何想法吗?$this->navigation() 抛出了一个

Method "navigation" does not exist and was not trapped in __call() 

另请注意,我的 crumbBar 位于我的布局中,而不是单独的视图中。

4

2 回答 2

2

是的,您可以使用数组。

你真正应该做的是创建你的数组,然后将它输入到 Zend_Navigation 的工厂来为你创建你的页面。

不幸的是,我的代码太复杂了,无法展示我如何使用它的示例。但我将提供一个简单的例子......

创建导航容器后,您可以向其中添加新页面。

$this->navigation()->addPage(array(
   'type' => 'uri',
   'label' => 'New page'));

但您也可以使用 addPages()。这就是我所做的。

我认为您应该等待文档为您加载备份,然后再查看。事实上它真的很容易。

当您有更具体的问题时,请提出并给我戳。我不得不经常使用导航,所以非常了解它。

此外,请查看 freenode 上的#zftalk。那里有很多帮助。

于 2010-02-23T18:14:19.417 回答
0
    // Disable Layout
    $this->view->layout()->disableLayout();     
    $this->_helper->viewRenderer->setNoRender(true);

    // Output XML than HTML
    $this->getResponse()->setHeader('Content-Type', 'text/xml; charset=utf-8');


    $container = new Zend_Navigation();

    // Replace this section with real dynamic data. 
    $pages = array(
        array(
            'label'  => 'Save',
            'action' => 'save',
        ),
        array(
            'label'  => 'Delete',
            'action' => 'delete',
        ),
    );

    // Add pages
    $container->addPages($pages);
    $this->view->navigation($container);

    // Output the data.
    echo $this->view->navigation()->sitemap();

另外使用 Zend Router 将 site.com/sitemap.xml 重定向到这个控制器/函数。

感谢许多帮助我到达这里的开发人员。

于 2013-04-17T06:55:12.673 回答