如何使Url助手在路由页面上工作


How to make Url helper work when on routed page?

我有一个路由到自定义模块的url。我在引导程序中添加了这一行。php

$router->addRoute('forum-board', new Zend_Controller_Router_Route(
        'forum-board', array('module' => 'admin', 'controller' => 'users', 'action' => 'forumdisplay')
    ));

路线运行良好!

但是,在论坛显示的视图中,当我调用时:

<a href="<?= $this->url( array ( 'module' => 'admin', 
                'controller'=> 'users', 'action' => 'resetpass',
                'userid'=>$userid)); ?>">Reset</a>

它不呈现URL。

当我打开与相同的页面时

http://zfProj12.local/admin/users/forumdisplay

它提供了正确的url,但在路由时,它没有,即作为

http://zfProj12.local/forum-board

有什么修复方法吗?

当您希望url()视图辅助对象根据您定义的路由进行渲染时,您可以通过名称将路由引用为(例如,在视图脚本中):

<a href="<?= $this->url(array('userid' => 'myuserid'), 'forum-board', true) ?>">Forum</a>

更新

您对url助手的调用表明您希望路由接受userid参数,但路由定义本身没有占位符。也许路由应该定义为:

$router->addRoute('forum-board', new Zend_Controller_Router_Route(
    'forum-board/:userid', array(
         'module' => 'admin', 
         'controller' => 'users', 
         'action' => 'forumdisplay',
     )
));

然后,当您使用userid的值调用url帮助程序时,该值将被插入到生成的url中。