我在后端用这个名称空间写了一个模块:
namespace backend'modules'payment;
所以如果我把模块移到前端的另一个项目,模块就会坏掉;
另一个问题是,我在配置中添加了名为"支付"的模块
'payment' =>
[
'class' => 'backend'modules'payment'Bank',
'components' =>
[
'service' =>
[
'class' => 'backend'modules'payment'components'Service',
]
]
]
我使用以下方法获得模块"服务"组件中actionReturn的完整url:
public function getReturnUrl()
{
return 'yii'helpers'Url::toRoute('payment/return',true);
}
现在,如果我想在另一个项目中更改模块名称,我必须更改所有这些函数才能获得有效的url,有什么方法可以解决这个问题吗?操作的url不依赖于模块名称
如果您在供应商名称空间中创建模块,则可以始终使用相同的url/routing 引用该模块
您可以轻松安装模块复制巡回供应商细分
vendor'yourVendorName'yourModuleName'
正确配置main.php 中的module.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中模块的名称分配给vars,并将您在配置中分配的模块名称映射到该var。通过这种方式,模块的名称和url中的相关名称可以很容易地重新映射。
我希望这对你有用