Zend framework2 模块中路由器另一个控制器的Contstruct url

Zend framework2 模块中路由器另一个控制器的Contstruct url,zend-framework2,router,Zend Framework2,Router,我是ZF2的新手。我有个问题要问 url('route-name',$urlparms,$urlpoptions);?> 当模块中有多个控制器时,我应该构造什么$URLPARMS和$URLPOPTIONS 我将相册模块重命名为Shop,它有两个控制器:indexController和VendorController。在视图>商店>供应商>index.phtml中,我添加: <p><a href="<?php echo $this->url('shop', array

我是ZF2的新手。我有个问题要问 url('route-name',$urlparms,$urlpoptions);?>

当模块中有多个控制器时,我应该构造什么$URLPARMS和$URLPOPTIONS

我将相册模块重命名为Shop,它有两个控制器:indexController和VendorController。在视图>商店>供应商>index.phtml中,我添加:

<p><a href="<?php echo $this->url('shop', array('action'=>'add')); ?>">
         Add new vendor</a></p>

您试图用来构造url的路由实际上是默认的子路由。所以你应该用它来代替:

<p><a href="<?php echo $this->url('shop/default', array('action'=>'add')); ?>">
         Add new vendor</a></p>

注意“shop/default”而不是shop以子管线为目标

此外,还应将控制器指定为一个参数,这样可以得到如下结果:

<p><a href="<?php echo $this->url('shop/default', array('controller' => 'vendor', 'action'=>'add')); ?>">
         Add new vendor</a></p>


很有效,谢谢你,鲁本。。如果我们有争论呢。。例如例如仅生成/shop/vendor/delete而不是/shop/vendor/delete/id/34@shijiexu这是因为routeThanks@Sam中没有定义参数
id
。我更改了子路由器“route'=>“/[:controller[/:action][/:id]]”,并且url按照预期构造。问题是,如果我有多个URL,比如shop/vendor/namevalue;车间/供应商/地址价值;还有更多参数shop/vendor/namevalue1/namevalue2/nabmevalue3。。我应该如何更新我的子路由器?我应该计算所有可能的url模式并为每种url构造子路由器吗?iirc筛选器值应该是查询参数,其他任何东西都可以用于路由本身
<p><a href="<?php echo $this->url('shop/default', array('controller' => 'vendor', 'action'=>'add')); ?>">
         Add new vendor</a></p>