|-摘 Yii2模块学习
讲到模块的控制台命令时,听不明白。 "想要在命令行中查看你的命令 ” 是什么意思?模块中的控制台命令您的模块也可以声明命令,这将通过 控制台 模式可用。当 Yii 在控制台模式下执行并将其指向命令的命名空间时。想要在...
讲到模块的控制台命令时,听不明白。 "想要在命令行中查看你的命令 ” 是什么意思?
模块中的控制台命令
您的模块也可以声明命令,这将通过 控制台 模式可用。
当 Yii 在控制台模式下执行并将其指向命令的命名空间时。想要在命令行中查看你的命令, 你需要更改 yii\base\Module::$controllerNamespace 属性。
一种实现方法是在模块的 init()
方法中测试Yii应用程序的实例类型:
public function init()
{
parent::init();
if (Yii::$app instanceof \yii\console\Application) {
$this->controllerNamespace = 'app\modules\forum\commands';
}
}
然后您的命令将从命令行使用以下路由:
yii <module_id>/<command>/<sub_command>
模块
http://www.yiichina.com/doc/guide/2.0/structure-modules#using-modules
模块是独立的软件单元,由模型, 视图, 控制器和其他支持组件组成, 终端用户可以访问在应用主体中已安装的模块的控制器, 模块被当成小应用主体来看待,和应用主体不同的是, 模块不能单独部署,必须属于某个应用主体。
创建模块
模块被组织成一个称为yii\base\Module::basePath的目录, 在该目录中有子目录如controllers
, models
, views
分别为对应控制器,模型,视图和其他代码,和应用非常类似。 如下例子显示一个模型的目录结构:
forum/
Module.php 模块类文件
controllers/ 包含控制器类文件
DefaultController.php default 控制器类文件
models/ 包含模型类文件
views/ 包含控制器视图文件和布局文件
layouts/ 包含布局文件
default/ 包含DefaultController控制器视图文件
index.php index视图文件
模块类
每个模块都有一个继承yii\base\Module的模块类, 该类文件直接放在模块的yii\base\Module::basePath目录下, 并且能被 自动加载。当一个模块被访问, 和 应用主体实例 类似会创建该模块类唯一实例,模块实例用来帮模块内代码共享数据和组件。
以下示例一个模块类大致定义:
namespace app\modules\forum;
class Module extends \yii\base\Module
{
public function init()
{
parent::init();
$this->params['foo'] = 'bar';
// ... 其他初始化代码 ...
}
}
如果 init()
方法包含很多初始化模块属性代码, 可将他们保存在配置 并在init()
中使用以下代码加载:...