此處說的模塊,就是Yii2框架的模塊。下面是如何定義一個(gè)模塊,
以cms模塊為例
1.添加配置 , @fecshop/app/appfront/config/modules/Cms.php
return [
'cms' => [
'class' => '\fecshop\app\appfront\modules\Cms\Module',
],
];
這里定義了模塊的名字,以及模塊的入口文件:
2.入口文件內(nèi)容如下:
<?php
namespace fecshop\app\appfront\modules\Cms;
use Yii;
use fecshop\app\appfront\modules\AppfrontModule;
class Module extends AppfrontModule
{
public $blockNamespace;
public function init()
{
# 以下代碼必須指定
$nameSpace = __NAMESPACE__;
# web controller
if (Yii::$app instanceof \yii\web\Application) {
$this->controllerNamespace = $nameSpace . '\\controllers';
$this->blockNamespace = $nameSpace . '\\block';
# console controller
} elseif (Yii::$app instanceof \yii\console\Application) {
$this->controllerNamespace = $nameSpace . '\\console\\controllers';
$this->blockNamespace = $nameSpace . '\\console\\block';
}
//$this->_currentDir = __DIR__ ;
//$this->_currentNameSpace = __NAMESPACE__;
# 指定默認(rèn)的man文件
//$this->layout = "home.php";
Yii::$service->page->theme->layoutFile = 'home.php';
parent::init();
}
}
這里面對(duì)模塊進(jìn)行了初始化。
$this->controllerNamespace
: 指的是模塊的controller路徑
$this->blockNamespace
: 指的是模塊的block路徑
Yii::$service->page->theme->layoutFile = 'home.php';
: 指定模板layout下面的
文件名字
模塊里面有幾個(gè)部分:
模塊入口部分:Modules.php,這里是模塊配置中class對(duì)應(yīng)的文件, 這個(gè)文件里面定義了controllers,block等等很多模塊參數(shù)的初始化。
模塊的controllers部分:模塊的控制層部分,這里
模塊的block部分:模塊的中間邏輯處理層,處理完成的數(shù)據(jù)返回controllers
模塊的helpers部分:幫助類,一般是一些靜態(tài)類處理部分。一些非數(shù)據(jù)庫的操作處理。
如果您想要重寫模塊,可以在配置部分的class指向您重寫的文件地址即可。
更多建議: