yii2 創建模塊modules


方案一:如果模塊兒較少,不用專門給模塊兒目錄定義別名,醬紫做就ok啦。

1、在項目根目錄下面創建一個 modules 目錄。

2、進入 gii : http://localhost/basic/web/index.php?r=gii 

假如我現在需要生成一個 report 的模塊兒,可以按如下填寫:

然后將它提示生成的那一行 repost=>['class'=>'app\modules\report\Module'] 配置到 app\config\web.phpmodules中就ok啦。

如果需要訪問的話,路由為:http://localhost/basic/web/index.php?r=report/default/index

report 為模塊兒名,default為控制器名,index為方法名

 

 

方案二:如果模塊兒很多,建意給每個模塊兒單獨定義一個別名,

此處的別名定義是要在預加載的時候就定義好,可不是在 app\config\web.php的 aliases=>[ ] 中定義的哦

方法:1、我們可以先創建一個 common 目錄,在 common中創建一個 bootstrap.php 文件,當然也可以自定義。

2、在 common\bootstrap.php 中添加如下別名:

Yii::setAlias('report', dirname(__DIR__) . '/modules/report'); 

// 看清楚哦,上面的別名定義可是沒有 @ 符號的哦,因為我們要把它當成模塊兒的根目錄,模塊其實也是一個獨立的軟件單元,它包含 模型, 視圖, 控制器 和其他支持的組件。 在許多方面上,模塊看起來像一個 應用,所以我們可以把它暫時看成一個應用

3、在 入口文件 index.php 中添加一行:

defined('YII_DEBUG') or define('YII_DEBUG', true);  //標識應用是否應用在調試模式
defined('YII_ENV') or define('YII_ENV', 'dev');  // 標識應用運行的環境
require(__DIR__ . '/../vendor/autoload.php'); // 注冊 composer 自動加載器
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php'); // 包含 Yii 類文件

require(__DIR__ . '/../common/bootstrap.php');//這就是我們自己添加的文件了

$config = require(__DIR__ . '/../config/web.php');  // 加載應用配置

把它放到入口文件中,系統啟動時就會被加載,那么此時 report 就相於  $_SERVER['DOCUMENT_ROOT']\modules\report 的路徑啦,模塊兒中的命名空間都可以以 report開頭

例如,此時的 modules\report\Module.php 的命名空間就是 namespace report

<?php

namespace report; /**
 * report module definition class
 */
class Module extends \yii\base\Module
{
    /**
     * @inheritdoc
     */
    public $controllerNamespace = 'report\controllers'; /**
     * @inheritdoc
     */
    public function init()
    {
        parent::init();

        // custom initialization code goes here
    }
}

控制的 命名空間也是 namespace report\controllers

namespace report\controllers; use yii\web\Controller;

/**
 * Default controller for the `report` module
 */
class DefaultController extends Controller
{
    /**
     * Renders the index view for the module
     * @return string
     */
    public function actionIndex()
    {
        return $this->render('index');
    }
}

`

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM