网址问题:zend导航将路由附加到网址 - 如何修改zend导航默认渲染

时间:2011-01-03 10:23:53

标签: zend-framework zend-navigation

我已经重新编写问题以显示问题所在。

  

您好,   我正在使用Zend Framework构建一个cms应用程序。除了>网址外,一切正常。当我点击指向的链接时:

'dep/open/id/001' 
     

我有效地到达那里,但链接文本被附加到网址。如果我现在将鼠标悬停在>我可以在状态栏中看到的另一个链接:

     

'沉积/打开/ ID /沉积/开/ ID / 023'

     

等等。

     

我无法编辑网址,因为它是渲染它们的Zend_Navigation。

     

我该如何修改?

     

由于

问题是我给Zend_Navigation错误的uris:

public function renderAction()
{
    ...

        //THIS IS WRONG:
        $uri =  'dep/show/id/' . $dep->dept_id;
        ...

        $itemArray[] = array(
                    'label' =>$label,
                   'uri' => $uri
                   );
    }
    $container = new Zend_Navigation($itemArray);
        $this->view->navigation()->setContainer($container);
}

uri应该是:

 $uri = $dep->dept_id;

我想这可能是因为我为'dep'设置了路线

$route = new Zend_Controller_Router_Route(
        'dep/show/:id',
        array(
            'action' => 'show',
            'controller' => 'dep',
            'module' => 'default',
            'id' => '',
            ),
        array( 
            'id' => '[0-9]+'
            )
        ); 

        $router->addRoute('dep', $route);

这可能是原因吗?

再次感谢

2 个答案:

答案 0 :(得分:1)

在我看来,问题在于您提供的是亲戚网址:

$uri = 'dep/show/id/' . $dep->dept_id;

所以实际上浏览器正在搞砸你,将网址 relative 解释为当前网址。

如果您使用基本网址前缀创建网址:

$uri = 'http://example.com/myapp/dep/show/id' . $dep->dept_id;

甚至:

$uri = '/myapp/dep/show/id' . $dep->dept_id;

然后浏览器将那些视为绝对(分别是root-absolute),你应该处于更好的状态。

请注意,前控制器可以使用baseUrl()

答案 1 :(得分:0)

在问题的第一次重复之后,我继续尝试传递给Zend_Navigation的路线和参数,我已经开始讨论实际问题是我已经将'dep'路线设置为:

'/dep/show/id' 

因此将$ uri参数中的相同路由传递给Zend_Navigation会产生重复问题。

在我发布问题之前,我似乎找不到解决方案 谢谢大家的耐心