2014-10-09 26 views
1

我要創建這樣一個鏈接:ZF2 fromRoute沒有返回默認的動作名稱

somesite.com/management/users/index/delete/10

在管理模塊名稱,用戶是控制器,索引是操作名稱,刪除是獲取記錄的ID的參數。 要創建這個環節我使用這部分代碼:

 $delUrl = $this->url()->fromRoute('management-users', array(
       'controller' => 'users', 
       'action' => 'index', 
       'delete' => $siteData['id'], 
     )); 

我的配置是象下面這樣:

'router' => array(
    'routes' => array(
     'management-index' => array(
      'type' => 'segment', 
      'options' => array(
       'route' => '/management[/:controller][/:action][/delete/:delete][/:id]', 
       'constraints' => array( 
        'delete' => '[0-9]+' , 
        'id' => '[0-9]+' 
       ), 
       'defaults' => array(
        '__NAMESPACE__' => 'Management\Controller', 
        'controller' => 'Index', 
        'action'  => 'index' 
       ), 
      ), 
     ), 

    ), 
), 

結果是這樣的:

somesite.com/management/ users/delete/10

該函數省略動作名稱,因爲它我這是我的默認動作,然後獲取刪除作爲操作名稱,我終於得到404錯誤。正如你所看到的,我有一個參數「id」,它不允許我從鏈接中省略短語「delete」。通過省略url的「刪除」,ZF2獲得的輸入爲「id」而不是「delete」。我也無法更改我的默認操作。 有沒有什麼辦法可以告訴ZF2在url中輸入動作名稱?

+0

錯誤報告:https://github.com/zendframework/zf2/issues/6744 – Abadis 2014-10-09 09:58:39

回答

0

重命名從「管理指數」的路線鍵值改爲「管理用戶」 從「指數」更改控制器名稱爲「用戶」 這樣的路線會讀到這樣:

'router' => array(
    'routes' => array(
     'management-users' => array(
      'type' => 'segment', 
      'options' => array(
       'route' => '/management[/:controller][/:action][/delete/:delete][/:id]', 
       'constraints' => array( 
        'delete' => '[0-9]+' , 
        'id' => '[0-9]+' 
       ), 
       'defaults' => array(
        '__NAMESPACE__' => 'Management\Controller', 
        'controller' => 'Users', 
        'action'  => 'index' 
       ), 
      ), 
     ), 

    ), 
), 

別t忘記更改控制器定義(可調用或工廠)以反映此更改。

+0

我爲什麼要做這個改變?你的答案似乎是無關緊要的 – Abadis 2014-10-11 17:43:03

相關問題