Yii 框架学习--03 多应用多模块
本文以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 多应用多模块的更多相关文章
- Yii框架学习 新手教程(一)
本人小菜鸟一仅仅,为了自我学习和交流PHP(jquery,linux,lamp,shell,javascript,server)等一系列的知识,小菜鸟创建了一个群.希望光临本博客的人能够进来交流.寻求 ...
- Yii框架学习笔记(二)将html前端模板整合到框架中
选择Yii 2.0版本框架的7个理由 http://blog.chedushi.com/archives/8988 刚接触Yii谈一下对Yii框架的看法和感受 http://bbs.csdn.net/ ...
- Yii 框架学习--01 框架入门
Yii 是一个高性能的,适用于开发 WEB2.0 应用的 PHP 框架. Yii目前有两个主要的版本: 2.0 和 1.1.本文以YII 2.0.7为例. 环境需求 Yii2.0 框架有一些系统上的需 ...
- PHP开发框架之YII框架学习——碾压ThinkPHP不是梦
前 言 JRedu 程序猿是一种慵懒的生物!能少敲一行代码,绝对不会多敲一个字符!所以,越来越多的开发框架应运而生,在帮助我们完成功能的同时,极大程度上也帮我们节省了人力物力,而且也提高了系统的 ...
- Yii框架学习资源盘点
盘点一些Yii框架的常用学习资源. 1.Yii中文论坛 https://www.yiichina.com/ 2.Yii中文网 http://www.yii-china.com/ 3.魏曦教你学Yii2 ...
- YII框架学习(一)
1.安装: windows:将php命令所在的文件夹路径加入到环境变量中,通过cmd命令:进入yii框架中的framework目录,执行: php yiic webapp ../cms linux:类 ...
- yii框架学习(MVC)
路由:两种方式,第一种是默认方式访问,假设配置了虚拟主机,那么localhost/web/index.php?r=admin/index 访问的是controllers目录下的admin控制器里 ...
- YII框架中的srbac权限管理模块的安全与使用(版本是1.1.20)
0x01 前言 srbac的原理: YII框架的srbac模块是一个专门管理权限的一个模块,那它是怎么管理权限的呢.我们知道YII框架的网页显示是由控制器实现的,控制器继承父类CController和 ...
- <yii 框架学习> yii 框架改为中文提示
工作需要用到yii框架,但发现yii框架自带的提示都是英文的.上网找资料才发现其实可以自己陪置 . 将项目protected/config/main.php里的app配置加上language=> ...
随机推荐
- python处理csv文件问题解决贴
实际工作中,碰到这么个问题:有个软件跑在linux系统上,其中用到一个数据库是csv格式的,但要向这个数据库添加600行新的数据,数据源同样是一个csv格式的文件. 有了目标,开始干活.首先想到的是, ...
- SpringCloud高可用Eureka搭建
网上很多博客写的都是在本地一台机器上面搭建的,我用两台机器来为大家搭建一个注册中心高可用集群 第一步:需要在每一台机器上面搭建一个注册中心. 第二步:编写第一台机器注册中心配置文件 第三步:编写第二台 ...
- 物联网设备是如何被破解的?分析一种篡改IoT固件内容的攻击方式
随着智能硬件进入到人们的生活,人们的生活质量开始有逐步的提高,人们与智能硬件之间的联系更加紧密.同时,智能硬件的安全问题也必须引起高度重视,因为其直接影响到人身安全.社会安全和国家安全. 大家是否 ...
- 大数据:Hadoop入门
大数据:Hadoop入门 一:什么是大数据 什么是大数据: (1.)大数据是指在一定时间内无法用常规软件对其内容进行抓取,管理和处理的数据集合,简而言之就是数据量非常大,大到无法用常规工具进行处理,如 ...
- Android最佳性能实践(四)——布局优化技巧
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/43376527 在前面几篇文章其中.我们学习了怎样通过合理管理内存,以及高性能编码技 ...
- C++ - 复制容器(container)的元素至还有一个容器
复制容器(container)的元素至还有一个容器 本文地址: http://blog.csdn.net/caroline_wendy C++复制容器(container)元素, 能够使用标准库(ST ...
- Android学习笔记(10).布局管理器
布局管理器的几个类都是ViewGroup派生的,用于管理组件的分布和大小,使用布局管理器能够非常好地解决屏幕适配问题. 布局管理器本身也是一个UI组件,布局管理器能够相互嵌套使用,以下是布局管理器的类 ...
- string的内存管理问题
string的内存管理是通过仅仅增不减的方式进行的,string的clear方法不会真正的释放内存,假设须要真正的释放内存可以连续调用string的这两个方法.resize(0),reserve(). ...
- XML文档读取-DOM
DOM(Document Object Model),“文档对象模型”早期是为了解决不用浏览器间数据兼容问题提出的解决方案,现在已经是W3C组织推荐的处理可扩展标志语言的标准编程接口. W3C DOM ...
- 自学Python2.4-基本数据类型-字典dict(objct)
Python dict方法总结 一.字典介绍 1.字典概述 ①字典是python中唯一内建的映射类型.又称关联数组或散列②映射类型对象里哈希值(键,key)和指向的对象(值,value)是一对多的的关 ...