本文以YII 2.0.7为例。

概述

首先看看多应用和多模块的特点:

多应用的特点:

  • 独立配置文件
  • 独立域名

多模块的特点:

  • 统一配置文件
  • 统一域名

那么,实际该怎么决定使用多应用还是多模块呢?

  • 对于前后台分离,例如后台需要单独的域名进行管理这个应该用多应用
  • 多应用的配置完全不一样,用多应用比较方便,配置文件使用不同的
  • 多应用需要更多的域名配置,比价麻烦,对于小项目也不区分域名,多模块比较好

多应用

最简单的方法是下载官网的 Yii2的高级应用程序模板:yii-advanced-app-2.0.12.tgz。下载下来解压后,进入advanced目录,运行:

# Windows
init.bat# Linux
init

会在frontendbackend两个应用的web目录生成入口文件index.phpfrontendbackend分别表示前台和后台应用,里面的目录结构是一样的:

assets/
config/
controllers/
models/
runtime/
views/
web/

运行:

$ cd advanced/frontend/web
$ php -S 0.0.0.0:8888
PHP 5.6.22 Development Server started at Sun Aug 20 21:10:28 2017
Listening on http://0.0.0.0:8888

打开浏览器输入http://0.0.0.0:8888就可以访问默认的首页了。

建议model还是放在根目录的common/models里。

多模块

多模块可以参照http://www.yiichina.com/doc/g...。示例:在frontend里新建一个h5应用:

1、建立相关目录

$ cd frontend
$ mkdir -p modules/h5 && cd modules/h5
$ mkdir controllers
$ touch Module.php

2、Module.php内容示例:

<?php
namespace frontend\modules\h5;class Module extends \yii\base\Module
{public function init(){parent::init();$this->params['foo'] = 'bar';// ...  其他初始化代码 ...}
}

3、在frontend/config/main.php增加模块的申明:

'modules' => ['h5' => ['class' => 'frontend\modules\h5\Module',// ... 模块其他配置 ...],
],

4、在modules/h5/controllers新建控制器类:

<?php
namespace frontend\modules\h5\controllers;use Yii;
use common\models\LoginForm;
use frontend\models\SignupForm;
use frontend\models\ContactForm;
use yii\base\InvalidParamException;
use yii\web\BadRequestHttpException;
use yii\web\Controller;class SiteController extends Controller
{public function actionIndex(){return "hello h5 module";//return $this->render('index');}
}

浏览器访问:http://localhost:8888/index.php?r=h5/site/index 即可访问。

还有一种方法也可以实现类似该URL路由的访问形式,例如r=test/site/index。只需要在frontend/controllers目录新建个子目录叫test,把控制器放在里面,然后改下命名空间为

namespace frontend\controllers\test;

就可以了。这种可以用于API版本控制,例如:

r=v1/site/index
r=v2/site/index

原载于:http://www.cnblogs.com/52fhy/...

欢迎关注公众号及时获取最新文章推送!

Yii 多应用多模块相关推荐

  1. yii 2.0 代码阅读 小记

    1.\yii\base\object 设置了get/set属性...使用getName()获取属性名..构造函数中使用config初始化属性 2.\yii\base\Component 继承自Obje ...

  2. Yii权限管理工具Srbac使用小结

    一.关于Srbac Srbac是基于Yii 框架的 RBAC(基于角色的访问控制) 插件模块,用于帮助Yii开发人员更方便地进行权限控制,在实际应用过程中也比较方便. 二.安装配置Srbac 在Yii ...

  3. yii mysql gii_Yii 框架使用Gii生成代码操作示例

    本文实例讲述了Yii 框架使用Gii生成代码操作.分享给大家供大家参考,具体如下: 开始 Gii Gii 是 Yii 中的一个模块. 可以通过配置应用的 modules 属性开启它.通常来讲在 con ...

  4. yii之gii的使用

    gii gii是yii中的一个模块.可以通过配置应用yii\base\Application::modules属性开启它,gii脚手架可以帮助我们自动生成模型,控制器,crud的一些操作等,gii被设 ...

  5. yii学习笔记—gii 自动代码生成工具

    其实 ajax 的一个很简单的实现原理就是建立一个隐藏的 iframe 然后通过这个 iframe 提交信息,再取 iframe 的返回信息,这样页面没有刷新,刷新的只是那个隐藏的 iframe Yi ...

  6. yii2框架_选择Yii 2框架的7个理由

    yii2框架 Late last year, SitePoint published an article highlighting the top PHP frameworks. Tied for ...

  7. php yii2模块,模块(Modules)

    模块 模块是独立的软件单元,由模型, 视图, 控制器和其他支持组件组成, 终端用户可以访问在应用主体中已安装的模块的控制器, 模块被当成小应用主体来看待,和应用主体不同的是, 模块不能单独部署,必须属 ...

  8. yii2 beta版 执行流程

    yii2 beta版 执行流程 自动加载 1.composer的自动加载 //composer的加载实现了四种方式,可以看看require(__DIR__ . '/../../vendor/autol ...

  9. gii无法访问 yii2_YII2框架访问gii、debug页面404的错误解决方法

    之前在介绍Yii框架的时候就说过 Yii 支持 gii 功能, gii 去自动生成 Web 站点常用功能的代码,也就是我们经常说的 CURD 操作,增删改查.使用 gii 生成代码也是非常的简单,Gi ...

最新文章

  1. 鲸鱼优化算法_Java 代码优化细节之比比谁更细
  2. CTFshow 文件包含 web87
  3. 42. Vue、React 等前端项目部署,刷新 404 问题解决方案
  4. node.js require 自动执行脚本 并生成html,利用node.js实现自动生成前端项目组件的方法详解...
  5. VS2017 下载离线MSDN文档
  6. c语言比赛积分程序,C语言积分赛.doc
  7. 部署可道云_可道云-快速搭建个人用云网盘
  8. 打游戏学习人工智能!不写代码|湾区人工智能
  9. linux三个命令模式切换,ubuntu16.04命令行模式和图形界面互相切换的两种解决办法,...
  10. 卵巢鸿蒙不全怎么检查,卵巢黄体功能不足怎么办 这三个处理方法要了解
  11. ES6——变量的解构赋值
  12. 常用html标签 —— 链接的颜色
  13. layui表格边框_layui怎么固定表格的表头
  14. 循环神经(LSTM)网络学习总结
  15. 人工神经网络可以做什么,人工神经网络有什么用
  16. 如何设置好看的form表单样式_HTML表格表单
  17. 2019最受欢迎的企业网站CMS建站系统排行榜
  18. Lagrange’s Mean Value Theorem - 拉格朗日中值定理
  19. html5 css3冷色调渐变色特效
  20. VxWorks 引导程序(BIOS/BootLoader/Bootrom)

热门文章

  1. python代码示例下载-python下xml解析库lxml最新版下载安装以及代码示例
  2. python贴吧发帖脚本-Python实现自动添加脚本头信息的示例代码
  3. python处理大量excel数据-使用python将大量数据导出到Excel中的小技巧分享
  4. python哪一版好用-Python最好用的编辑器是哪款?北京老男孩教育
  5. python对excel某一列去重-python中怎么对dataframe列去重
  6. python怎么安装numpy库-Python NumPy库安装使用笔记
  7. AprilTags二维码的检测与应用
  8. git在提交的时候报错:Your branch is up to date with ‘origin/master‘
  9. lua学习笔记之数据文件及序列化
  10. CPPUNIT的安装和编译