編輯: 我剛剛找到了我自己的解決方案。 因爲我的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。
我已經做了大量的研究,但無法弄清楚這裏發生了什麼。 描述的策略here和there沒有辦法。
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(
.
.
.
),
),
),
),
);
感謝您的幫助!