不需要的,在controller继承的基类:https://github.com/fecshop/yii2_fecshop/blob/master/app/appfront/modules/AppfrontController.php
public $blockNamespace;
/**
* @param $blockName | String
* get current block
* 这个函数的controller中得到block文件,譬如:
* cms模块的ArticleController的actinIndex()方法中使用$this->getBlock()->getLastData()方法,
* 对应的是cms/block/article/Index.php里面的getLastData(),
* 也就是说,这个block文件路径和controller的路径有一定的对应关系
* 这个思想来自于magento的block。
*/
public function getBlock($blockName = '')
{
if (!$blockName) {
$blockName = $this->action->id;
}
if (!$this->blockNamespace) {
$this->blockNamespace = Yii::$app->controller->module->blockNamespace;
}
if (!$this->blockNamespace) {
throw new \yii\web\HttpException(406, 'blockNamespace is empty , you should config it in module->blockNamespace or controller blockNamespace ');
}
$viewId = $this->id;
$viewId = str_replace('/', '\\', $viewId);
$relativeFile = '\\'.$this->blockNamespace;
$relativeFile .= '\\'.$viewId.'\\'.ucfirst($blockName);
//查找是否在rewriteMap中存在重写
$relativeFile = Yii::mapGetName($relativeFile);
return new $relativeFile();
}
可以看到类变量blockNamespace
,这个就是用来设置查找block文件的,如果不填写,那么默认使用的是当前modules的文件路径,您可以设置这个类变量的值。
譬如:
public $blockNamespace = 'fbbcbase\\app\\appadmin\\modules\\Sales\\block';
然后再这个namespaces对应的文件路径中添加block
即可