我已经重新编写问题以显示问题所在。
您好, 我正在使用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);
这可能是原因吗?
再次感谢
答案 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会产生重复问题。
在我发布问题之前,我似乎找不到解决方案 谢谢大家的耐心