如果你只是想在原来的customer modules基础上面添加新的controller,配置中覆盖class
return [
'customer' => [
'controllerMap' => [
'sourcing' => 'appfront\local\local_modules\Customer\controllers\SourcingController'
],
'params'=> [
... (省略了)
]
]
]
也就是上面的配置部分,class
部分去掉,如果你想重写某个controller,那么你在controllerMap
中添加重写的controller即可
如果你在module config使用了新的class,那么你重写的是整个模块,下面的代码你可以看到
public function init()
{
// 以下代码必须指定
$nameSpace = __NAMESPACE__;
// 如果 Yii::$app 对象是由类\yii\web\Application 实例化出来的。
if (Yii::$app instanceof \yii\web\Application) {
// 设置模块 controller namespace的文件路径
$this->controllerNamespace = $nameSpace . '\\controllers';
// 设置模块block namespace的文件路径
$this->blockNamespace = $nameSpace . '\\block';
}
//$this->_currentDir = __DIR__ ;
//$this->_currentNameSpace = __NAMESPACE__;
// 设置该模块的view(theme)的默认layout文件。
Yii::$service->page->theme->layoutFile = 'dashboard.php';
parent::init();
}
$this->controllerNamespace = $nameSpace . '\\controllers';
,这个代码的意思应该能读懂吧?这个变量就是设置controller的文件路径,也就是怎么找controller, 这里执行后,controller就会去 appfront\local\local_modules\Customer\controllers
里面找,这个里面肯定找不到,然后就会报错
多读一下源码。