移动模块时命名空间已断开


Namespace broken on moving module

我在后端用这个名称空间写了一个模块:

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中的相关名称可以很容易地重新映射。

我希望这对你有用