2015-11-23 98 views
0

打破我寫了一個模塊在後端使用此命名空間:命名空間上的移動模塊

namespace backend\modules\payment; 

所以如果我移動模塊在前端模塊將爆發另一項目;

,另一個問題是,我在配置

'payment' => 
[ 
      'class' => 'backend\modules\payment\Bank', 
      'components' => 
      [ 
       'service' => 
       [ 
        'class' => 'backend\modules\payment\components\Service', 
       ] 
      ] 
] 

添加模塊名稱爲「支付」,我用這個方法得到完整URL actionReturn模塊的「服務」組件:

public function getReturnUrl() 
{ 
    return \yii\helpers\Url::toRoute('payment/return',true); 
} 

現在如果我想在另一個項目中更改模塊名稱,我必須去改變所有這些功能以獲得有效的url, 有沒有什麼辦法解決這個問題,並且動作的url不依賴於模塊名稱

回答

1

如果您在您的供應商命名空間/模塊你CA參閱模塊總是以相同的URL路由

,您可以輕鬆安裝模塊copyng旅遊供應商子目錄

vendor\yourVendorName\yourModuleName\ 

配置得當module.php並在main.php中添加模塊部分

如果您認爲您在config/main.php中分配的模塊可能會與其他模塊混淆,那麼您應該爲模塊指定一個適當的名稱。

在URL的模塊名稱中使用是用戶在config/main.php部分模塊指定名稱

這樣:

 'modules' => [ 
      ..... 
      'auth'=> [  
       'class' => 'vendor\dfenx\auth\Module', 
      ], 
      'yourModuleName' => [ 
       'class' => 'vendor\yourVendorName\yourModuleDir\Module', 
      ], 
      'anotherModuleName' =>[ 
       'class' => 'vendor\anotherVendorName\anotherModuleDir\Module', 
      ], 

     ..... 

     ], 

明顯的模塊名稱yourModuleName和anotherModuleName不能是否則基於url的ruoting不能正常工作。

最後,您可以將url中的模塊名稱分配給變量,並映射到您在配置中分配的模塊名稱。通過這種方式,模塊的名稱和url中的相關名稱可以輕鬆重新映射。

我希望這對你有用

+0

謝謝你的回答,我應該測試它。 但是如果有一個註冊模塊的配置與'anotherModuleName' 什麼發生在url?你是否以'/ yourModuleName/controller/action'的方式工作,或者它的工作方式是'/ anotherModuleName/controller/action'? – mmta41

+0

對於這最後一個問題,我已經更新了我的答案.. – scaisEdge