2013-08-27 33 views
0

我是ZF2的新手。我對 url('route-name',$ urlParams,$ urlOptions)有疑問。 ?>將模塊中的路由器的另一個控制器連接到URL

當模塊中有多個控制器時,我應該如何構造$ urlParams和$ urlOptions?

我將Album模塊重命名爲Shop,它有兩個控制器:indexController和VendorController。在查看>商店>供應商> index.phtml,我補充一下:

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

瞄準這個鏈接會鏈接到localhost /店/供應商/添加。但頁面顯示的鏈接是: http://host.com/shop 而我想是 http://host.com/shop/vendor/add

我的理解是,我應該設置$ urlOPtions領域,任何人都可以給我的例子嗎?感謝所有 下面是module.config.php:

'router' => array(
    'routes' => array(
     'shop' => array(
      'type' => 'Literal', 
      'options' => array(
       'route' => '/shop', 
       'defaults' => array(
        '__NAMESPACE__' => 'Shop\Controller', 
        'controller' => 'Index', 
        'action'  => 'index', 
       ), 
      ), 
      'may_terminate' => true, 
      'child_routes' => array(
       'default' => array(
        'type' => 'Segment', 
        'options' => array(
         'route' => '/[:controller[/:action]]', 
         'constraints' => array(
          'controller' => '[a-zA-Z][a-zA-Z0-9_-]*', 
          'action'  => '[a-zA-Z][a-zA-Z0-9_-]*', 
         ), 
         'defaults' => array(
         ), 
        ), 
       ), 
      ), 
     ), 
    ), 
), 
'controllers' => array(
    'invokables' => array(
     'Shop\Controller\Index' => 'Shop\Controller\IndexController', 
     'Shop\Controller\Vendor'=> 'Shop\Controller\VendorController' 
    ), 
), 

回答

1

你正在嘗試使用構造URL路徑實際上是默認孩子的路線。所以你應該使用它:

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

注意'商店/默認',而不是商店目標的兒童路線。

你也應該指定控制器作爲參數,所以你得到的東西是這樣的:

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

它的工作原理,感謝魯本。怎麼樣,如果我們有爭論。例如。例如。 Delete只生成/ shop/vendor/delete而不是/ shop/vendor/delete/id/34 –

+0

@shijiexu這是因爲路徑 – Sam

+0

中沒有定義param'id'謝謝@Sam。我更改了子路由器'route'=>'/ [:controller [/:action] [/:id]]',並按照預期構建了url。問題是,如果我有多個網站像shop/vendor/namevalue; shop/vendor/addressValue;和更多的參數shop/vendor/namevalue1/namevalue2/nabmevalue3 ..我應該如何更新我的子路由器?我應該計算所有可能的URL模式併爲每種類型的url構建子路由器嗎? –

相關問題