本文以YII 2.0.7为例。

概述

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

多应用的特点:

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

多模块的特点:

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

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

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

多应用

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

# Windows
init.bat # Linux
init

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

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/guide/2.0/structure-modules配置。示例:在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

Yii 框架学习--03 多应用多模块的更多相关文章

  1. Yii框架学习 新手教程(一)

    本人小菜鸟一仅仅,为了自我学习和交流PHP(jquery,linux,lamp,shell,javascript,server)等一系列的知识,小菜鸟创建了一个群.希望光临本博客的人能够进来交流.寻求 ...

  2. Yii框架学习笔记(二)将html前端模板整合到框架中

    选择Yii 2.0版本框架的7个理由 http://blog.chedushi.com/archives/8988 刚接触Yii谈一下对Yii框架的看法和感受 http://bbs.csdn.net/ ...

  3. Yii 框架学习--01 框架入门

    Yii 是一个高性能的,适用于开发 WEB2.0 应用的 PHP 框架. Yii目前有两个主要的版本: 2.0 和 1.1.本文以YII 2.0.7为例. 环境需求 Yii2.0 框架有一些系统上的需 ...

  4. PHP开发框架之YII框架学习——碾压ThinkPHP不是梦

      前  言 JRedu 程序猿是一种慵懒的生物!能少敲一行代码,绝对不会多敲一个字符!所以,越来越多的开发框架应运而生,在帮助我们完成功能的同时,极大程度上也帮我们节省了人力物力,而且也提高了系统的 ...

  5. Yii框架学习资源盘点

    盘点一些Yii框架的常用学习资源. 1.Yii中文论坛 https://www.yiichina.com/ 2.Yii中文网 http://www.yii-china.com/ 3.魏曦教你学Yii2 ...

  6. YII框架学习(一)

    1.安装: windows:将php命令所在的文件夹路径加入到环境变量中,通过cmd命令:进入yii框架中的framework目录,执行: php yiic webapp ../cms linux:类 ...

  7. yii框架学习(MVC)

    路由:两种方式,第一种是默认方式访问,假设配置了虚拟主机,那么localhost/web/index.php?r=admin/index    访问的是controllers目录下的admin控制器里 ...

  8. YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)

    0x01 前言 srbac的原理: YII框架的srbac模块是一个专门管理权限的一个模块,那它是怎么管理权限的呢.我们知道YII框架的网页显示是由控制器实现的,控制器继承父类CController和 ...

  9. <yii 框架学习> yii 框架改为中文提示

    工作需要用到yii框架,但发现yii框架自带的提示都是英文的.上网找资料才发现其实可以自己陪置 . 将项目protected/config/main.php里的app配置加上language=> ...

随机推荐

  1. 用python的requests第三方模块抓取王者荣耀所有英雄的皮肤

    本文使用python的第三方模块requests爬取王者荣耀所有英雄的图片,并将图片按每个英雄为一个目录存入文件夹中,方便用作桌面壁纸 下面时具体的代码,已通过python3.6测试,可以成功运行: ...

  2. django中request相关用法

    URL相关信息: HttpRquest对象包含当前请求url的一些信息,通过这些信息,你可以获得正在访问这个页面的用户,或者使用的浏览器: request.path :除域名以外的请求路径,以正斜杠开 ...

  3. weex加入iconfont

    weex加入图标可能是项目开发中最头疼的事情了,还好有 阿里巴巴矢量图标库解决了开发时的图标问题,下面我们一起来踩坑吧<text class="left"></ ...

  4. Python 学习(1) 简单的小爬虫

    最近抽空学了两天的Python,基础知识都看完了,正好想申请个联通日租卡,就花了2小时写了个小爬虫,爬一下联通日租卡的申请页面,看有没有好记一点的手机号~   人工挑眼都挑花了. 用的IDE是PyCh ...

  5. hdu1181 变形课(vector容器+dfs)

    变形课 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others) Total Submi ...

  6. Java 并发专题 : Executor具体介绍 打造基于Executor的Webserver

    转载标明出处:http://blog.csdn.net/lmj623565791/article/details/26938985 继续并发,貌似并发的文章非常少有人看啊~哈~ 今天准备具体介绍jav ...

  7. python 创建列表和向列表添加元素方法

    今天的学习内容是python中的列表的相关内容. 一.创建列表 1.创建一个普通列表 >>> tabulation1 = ['大圣','天蓬','卷帘'] >>> ...

  8. .NET+Ajax+ashx 实现Echarts图表动态交互

    前言: 使用Echarts展示图表效果,在这里只做了四种案例:折线.柱状.圆形.雷达.当初是一位朋友用到Echarts展示数据,他没有太多时间弄,所以我就帮他搞出来,当初刚接触的时候也是一头雾水,不知 ...

  9. adobe acrobat x pro破解版

    adobe acrobat x pro破解版是Adobe官方出品的PDF文档全能解决方案套件. PDF文件格式是Adobe公司设计的,用其公司开发的Adobe Acrobat X Pro来创建.编辑. ...

  10. docker commit使用

    我们运行的容器可能在镜像的基础上做了一些修改,有时候我们希望保存起来,封装成一个更新的镜像 docker自己提供的有commit功能 我们以centos为例,现在我们要在一个裸的centos上面安装v ...