2013-08-16 84 views
4

編輯: 我剛剛找到了我自己的解決方案。 因爲我的ContentManagerController擴展了AbstractRestfulController,所以它自然沒有實現索引操作。所以'defaults'數組中的'action'字段必須被''或null覆蓋。然後根據HTTP請求類型執行正確的操作將按預期調用。我的頭腦在哪裏?ZF2 - 供應商模塊的首要配置ZFcUser

這是更新的代碼。更改

'defaults' => array(
    'controller' => 'zfcuser', 
    'action'  => 'index', 
), 

'defaults' => array(
    'controller' => 'ContentManager\Controller\ContentManager', 
    'action'  => '', // or null 
), 

---原貼---

我試圖從一個自定義模塊(ContentManager內覆蓋供應商模塊(ZFcUser)的航線)module.config.php。 ContentManagerController擴展了原來的UserController。我不想觸摸ZFcUser的module.config.php,因爲它可能會在通過作曲家進行預期更新後導致麻煩。我想嚴格分離我從原始供應商文件中所做的任何配置。 只需重寫

'route' => '/user', 

'route' => '/cms', 

作品了,但不是我想要達到的目標。 所以,我需要

'defaults' => array(
    'controller' => 'ContentManager\Controller\ContentManager', 
), 

更換控制器項以及

'defaults' => array(
    'controller' => 'zfcuser', 
    'action'  => 'index', 
), 

但是,這給了我一個404錯誤。

The requested controller was unable to dispatch the request. 

Controller: 
ContentManager\Controller\ContentManager 

好像兩個控制器都有衝突。當我註釋掉 中的'defaults'數組時,ZFcUser module.config.php然後我的ContentManagerController按預期調用。 我也確保我的模塊在ZFcUser之後註冊。所以壓倒一切應該工作,afaik。

我已經做了大量的研究,但無法弄清楚這裏發生了什麼。 描述的策略herethere沒有辦法。

return array(
    'controllers' => array(
     'invokables' => array(
      'ContentManager\Controller\ContentManager' => 'ContentManager\Controller\ContentManagerController', 
     ), 
    ), 
    'router' => array(
     'routes' => array(
      'zfcuser' => array(
       'type' => 'Literal', 
       'priority' => 1000, 
       'options' => array(
        'route' => '/cms', 
        'defaults' => array(
         'controller' => 'ContentManager\Controller\ContentManager', 
        ), 
       ), 
       'may_terminate' => true, 
       'child_routes' => array(
        . 
        . 
        . 
       ), 
      ), 
     ), 
    ), 
); 

感謝您的幫助!

回答

1

作者發現了這種營養,但沒有回答這個問題(他編輯它),我只是將它複製粘貼到答案上。

我剛剛發現了我自己的解決方案。由於我的ContentManagerController擴展了AbstractRestfulController,它自然沒有實現索引操作。所以'defaults'數組中的'action'字段必須被''或null覆蓋。然後根據HTTP請求類型執行正確的操作將按預期調用。我的頭腦在哪裏?

這是更新的代碼。更改

'defaults' => array(
    'controller' => 'zfcuser', 
    'action'  => 'index', 
), 

'defaults' => array(
    'controller' => 'ContentManager\Controller\ContentManager', 
    'action'  => '', // or null 
),