0

我重新编辑了问题以显示问题出在哪里。

您好,我正在使用 Zend Framework 构建一个 cms 应用程序。一切正常,除了 >urls。当我单击指向以下内容的链接时:

'dep/open/id/001' 

我有效地到达那里,但链接文本附加到 url。如果我现在将鼠标悬停在 >another 链接上,我可以在状态栏中看到:

'dep/open/id/dep/open/id/023'

等等。

我无法编辑这些 url,因为它是 Zend_Navigation 正在呈现它们。

我该如何修改这个?

谢谢

问题是我给 Zend_Navigation 错误的 uri:

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);

这可能是原因吗?

再次感谢

4

2 回答 2

1

在我看来,问题在于您提供的是相对url:

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

所以实际上是浏览器把你搞砸了,解释对于当前 url 的 url。

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

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

甚至:

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

然后浏览器会将它们视为绝对的(分别是绝对根),您应该处于更好的状态。

请注意,baseUrl()可从前端控制器获得。

于 2011-01-04T08:40:52.607 回答
0

在第一次重新编辑问题之后,我继续尝试传递给 Zend_Navigation 的路由和参数,我得出结论,实际上问题在于我已经将“dep”路由设置为:

'/dep/show/id' 

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

在我在这里发布问题之前我似乎没有找到解决方案谢谢大家的耐心等待

于 2011-01-05T11:44:10.693 回答