> 模块是一个有自己的模型,视图,控制器以及其它模块的实体。这实际上是在应用程序内的应用程序。
[TOC]
#### 第1步- 在你的项目根目录内创建一个 modules 文件夹。在 modules 文件夹内创建一个名为 admin 的文件夹。这是 admin 模块的基本文件夹。
#### 第2步 - 在 admin 文件夹里边,使用以下代码来创建 Admin.php 文件。
~~~
<?php
namespace app\modules\admin;
class Admin extends \yii\base\Module {
public function init() {
parent::init();
}
}
?>
~~~
我们刚刚创建了一个模块类。它位于模块根路径下。每一次模块被访问时,将创建对应的模块类的一个实例。init()函数用于初始化模块的属性。
#### 第3步 - 现在,在 admin文件夹内添加两个目录- controllers 和 views。添加 CustomController.php 文件到控制器的文件夹中。
~~~
<?php
namespace app\modules\admin\controllers;
use yii\web\Controller;
class CustomController extends Controller {
public function actionGreet() {
return $this->render('greet');
}
}
?>
~~~
当创建一个模块,惯例是把控制器类到模块根路径的 controllers 目录。我们刚才定义的actionGreet函数,只返回一个 greet 视图。
在模块中视图应该放在模块基本路径的 views 文件夹中。如果视图是由控制器呈现,那么它们应位于对应于该控制器ID的文件夹中。将 custom 文件夹添加到 views 文件夹。
#### 第4步 - 在 custom 目录里创建一个名为 greet.php 文件并使用下面的代码。
~~~
<h1>Hello,这是一个自定义模块!</h1>
~~~
我们刚刚创建了 actionGreet 视图。要在模块中使用这个新创建文件,我们还应该配置应用程序。我们应该将模块添加到应用程序的模块属性中。
#### 第5步 - 修改 config/web.php 文件,如下。
~~~
<?php
$params = require(__DIR__ . '/params.php');
$config = [
'id' => 'basic',
'basePath' => dirname(__DIR__),
'bootstrap' => ['log'],
'components' => [
'request' => [
// !!! insert a secret key in the following (if it is empty) - this is
//required by cookie validation
'cookieValidationKey' => 'Yia-yiibai.com',
],
'cache' => [
'class' => 'yii\caching\FileCache',
],
'user' => [
'identityClass' => 'app\models\User',
'enableAutoLogin' => true,
],
'errorHandler' => [
'errorAction' => 'site/error',
],
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
// send all mails to a file by default. You have to set
// 'useFileTransport' to false and configure a transport
// for the mailer to send real emails.
'useFileTransport' => true,
],
'log' => [
'traceLevel' => YII_DEBUG ? 3 : 0,
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
],
],
'db' => require(__DIR__ . '/db.php'),
],
'modules' => [
'admin' => [
'class' => 'app\modules\admin\Admin',
],
],
'params' => $params,
];
if (YII_ENV_DEV) {
// configuration adjustments for 'dev' environment
$config['bootstrap'][] = 'debug';
$config['modules']['debug'] = [
'class' => 'yii\debug\Module',
];
$config['bootstrap'][] = 'gii';
$config['modules']['gii'] = [
'class' => 'yii\gii\Module',
];
}
return $config;
?>
~~~
模块的控制器路由必须使用模块ID开始,后面控制器ID和动作ID。
#### 第6步 - 如要在应用程序运行 actionGreet,应该使用下面的路由
~~~
admin/custom/greet
~~~
在这里,admin 就是一个模块ID,custom 是控制器ID和 greet 就是一个动作ID。
第7步- 现在,键入URL访问: http://localhost:8080/index.php?r=admin/custom/greet ,就会看到下面的输出结果了。
![](https://box.kancloud.cn/1058c01b9cdfe10379863091d6f41f65_689x380.png)
# 要点
模块(Modules)应该 −
在大型应用程序中。应划分其功能分成几个应用组。每个应用功能组可以作为一个模块开发。
可重复使用。一些常用的功能,如搜索引擎优化管理或博客的管理,可以开发成模块,这样在今后的项目中很容易地重用它们。
- 基础教程
- 入门安装
- Yii2 composer 安装慢解决
- Cookies
- 数据库操作
- 数据提供者
- 助手类
- 验证规则
- GridView
- DetailView
- YII2分页
- JS、CSS的引用
- Excel导出
- 中文转拼音
- 发送邮件
- 第三方插件
- Session跨域共享
- Url跨域访问
- 场景应用
- 查询条件链
- Session分布式共享
- Redis的使用
- mongodb
- 高级教程
- 自定义gii模板
- 角色权限管理(RBAC)
- user组件的配置
- 国际化(I18N)
- 小部件(Widget)
- 模块(Module)
- 行为(Behavior)
- 缓存(Cache)
- migrate 数据库迁移
- phpstorm
- 快捷键
- 自定义
- 其它插件