【问题标题】:Url problem: zend navigation appends routes to url - How to modify zend navigation default renderingUrl 问题:zend 导航将路由附加到 url - 如何修改 zend 导航默认呈现
【发布时间】:2011-01-05 19:44:10
【问题描述】:

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

嗨, 我正在使用 Zend Framework 构建一个 cms 应用程序。一切正常,除了 >urls。当我点击指向:

的链接时
'dep/open/id/001' 

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

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

等等。

我无法编辑这些 url,因为它是 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);

可能是这个原因吗?

再次感谢

【问题讨论】:

    标签: zend-framework zend-navigation


    【解决方案1】:

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

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

    所以实际上是 browser 把你搞砸了,将那个 url relative 解释为当前 url。

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

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

    甚至:

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

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

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

    【讨论】:

    • 谢谢大卫,在第一次重新编辑问题后,我继续尝试传递给 Zend_Navigation 的路线和参数,我得出结论,实际上问题在于我已经设置了'dep' 路由到 '/dep/show/id' 因此将相同的路由传递给 Zend_Navigation 会产生重复问题。
    • 啊啊,明白了。很高兴您发现了问题。干杯!
    【解决方案2】:

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

    '/dep/show/id' 
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-05
      • 2012-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-09
      • 1970-01-01
      相关资源
      最近更新 更多