从零开始学YII2框架(六)高级应用程序模板


Posted in PHP onAugust 20, 2014

高级应用程序模板
这个模板用在大型的团队开发项目中,而且后台从前台独立分离出来以便于部署在多个服务器中。由于YIi2.0的一些新的特性,这个程序模板的功能要更深一点。提供了基本的数据库的支持,注册、密码找回等功能。

安装

可以通过Composer来安装
如果没有安装Composer,先安装

curl -s http://getcomposer.org/installer | php

然后用如下命令来获取

php composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-advanced /path/to/yii-application

也可以直接下载压缩文件:Yii 2 with advanced application template(beta)
https://github.com/yiisoft/yii2/ ... -app-2.0.0-beta.tgz

开始

安装完成后,需要对其进行初始化操作。

执行init,选择开发环境(dev)
php /path/to/yii-application/init
创建新的数据库,设置common/config/main-local.php里的components.db数据库信息
使用控制台命令迁移数据库
yii migrate
设置web服务器的根目录
前台/path/to/yii-application/frontend/web/对应的url为http://frontend/
后台/path/to/yii-application/backend/web/对应的url为http://backend/

目录结构

在根目录下面有这几个子目录

backend——后台web程序
common——公共的文件
console——控制台程序
environments——环境配置
frontend——前台web程序
根目录下面还有包含一些文件

.gitignore ——git版本控制中忽略的文件和目录,如果你有一些你不想要的文件到你的源代码里面就把它添加到这个文件中。
composer.json——这个下面会描述
init——在Composer里面所描述初始化脚本
init.bat——和上面一样,不过是Windows下面的
LIENSE.md——这个就不说了
README.md——同上
requirements.php——Yii运行环境要求检测文件
yii——控制台程序引导文件
yii.bat——Windows下面的东东

系统定义的路径别名

@yii ——框架的目录。
@app——当前正在运行的应用程序的基本路径。
@common -公共文件目录。
@frontend——前端web应用程序目录。
@backend ——后端web应用程序目录。
@console -控制台目录。
@runtime——当前正在运行的web应用程序的运行时目录
@vendor ——基础框架目录。
@web ——当前正在运行的web应用程序的url
@webroot——当前正在运行的web应用程序的web根目录。

应用程序

这个模板包含三个应用程序,前台、后台和控制台。前台通常来说就是展现给终端用户的,也就是项目本身。后台就是管理员控制面板,包含有分析以及类似的功能等。控制台主要用来做一些定时任务和一些简单的服务器的管理,另外也可以用来部署应用程序、数据库的迁移、资源的管理等。

common 目录提供一些公共的文件,可用于多个应用程序,例如User模型。

前台和后台都是web应用程序,他们都包含一个web目录,也就是web的根目录,在部署服务器的时候就得要指向这个目录。
每个应用程序都有他们自己的命名空间以及对应的别名。同理,common也有自己的命名空间和对应的别名。

配置和开发环境

在平常的开发中,直接设置配置文件会有多个问题

每个团队成员都有自己的配置选项。如果提交这样的配置将影响其他团队成员。
产品数据库密码和API密钥不应该在代码仓库中。
在有多个服务器的情况下:开发、测试、生产,每一个服务器都应该有自己的配置。
每种情况下都定义所有配置选项很重复,并且还要花太多的时间去维持它。

为了解决这些问题,Yii引入了一个非常简单的环境的概念。每个环境由环境目录下的一组文件的集合来表示。init命令用于不同环境之间切换。它只是复制从环境目录中所有应用程序的根目录。

通常环境包含应用程序引导文件如index.php和以-local.php后缀的配置文件。这些已经添加到.gitignore中,所以不会再添加到源码仓库中。
为了避免重复的配置文件相互覆盖。例如,前台应用程序按照以下顺序来读取配置:

common/config/main.php
common/config/main-local.php
frontend/config/main.php
frontend/config/main-local.php

参数文件按以下顺序读取

common/config/params.php
common/config/params-local.php
frontend/config/params.php
frontend/config/params-local.php

后面读取的文件配置会覆盖前面的配置

整个的流程图形如下

从零开始学YII2框架(六)高级应用程序模板

配置 Composer

应用程序安装完成后就可以设置要目录下面的composer.json

{
  "name": "yiisoft/yii2-app-advanced",
  "description": "Yii 2 Advanced Application Template",
  "keywords": ["yii", "framework", "advanced", "application template"],
  "homepage": "http://www.yiiframework.com/",
  "type": "project",
  "license": "BSD-3-Clause",
  "support": {
    "issues": "https://github.com/yiisoft/yii2/issues?state=open",
    "forum": "http://www.yiiframework.com/forum/",
    "wiki": "http://www.yiiframework.com/wiki/",
    "irc": "irc://irc.freenode.net/yii",
    "source": "https://github.com/yiisoft/yii2"
  },
  "minimum-stability": "dev",
  "require": {
    "php": ">=5.4.0",
    "yiisoft/yii2": "*",
    "yiisoft/yii2-swiftmailer": "*",
    "yiisoft/yii2-bootstrap": "*",
    "yiisoft/yii2-debug": "*",
    "yiisoft/yii2-gii": "*"
  },
  "scripts": {
    "post-create-project-cmd": [
      "yii\\composer\\Installer::setPermission"
    ]
  },
  "extra": {
    "writable": [
      "backend/runtime",
      "backend/web/assets",
      "console/runtime",
      "console/migrations",
      "frontend/runtime",
      "frontend/web/assets"
    ]
  }
}

首先,修改一些基本信息。例如名称,描述,关键词,主页等等。
你还可以根据你的需要添加更多的应用程序。这些包都是来自packagist.org,可免费的浏览所有的代码。
修改完composer.json之后 就可以运行

php composer.phar update --prefer-dist

,等下载并安装完成后就可以开始使用了。自动加载的类将会自动处理。

创建从后端到前端的链接

通常情况下需要从后端应用程序连接到前端应用程序。因为前端应用程序可能包含自己的URL管理规则,所以需要再添加一个不同名字的后台的URL管理规则。

return [
  'components' => [
    'urlManager' => [
      // here is your normal backend url manager config
    ],
    'urlManagerFrontend' => [
      // here is your frontend URL manager config
    ],
  ],
];

之后,就可以像这样来使用前台的url

echo Yii::$app->urlManagerFrontend->createUrl(...);

原文链接:http://www.yiifans.com/forum.php?mod=viewthread&tid=25
 (出处: Yii2|Yii爱好者中文社区门户)

翻译来源:http://www.yiiframework.com/doc-2.0/guide-apps-advanced.html
(Yii Framework 2.0 API Decumentation)

PHP 相关文章推荐
不用GD库生成当前时间的PNG格式图象的程序
Oct 09 PHP
php对gzip文件或者字符串解压实例参考
Jul 25 PHP
通过PHP CLI实现简单的数据库实时监控调度
Jul 01 PHP
PHP最常用的2种设计模式工厂模式和单例模式介绍
Aug 14 PHP
PHP strstr 函数判断字符串是否否存在的实例代码
Sep 28 PHP
php实现memcache缓存示例讲解
Dec 04 PHP
PHP常用编译参数中文说明
Sep 27 PHP
PHP实现递归无限级分类
Oct 22 PHP
php基于openssl的rsa加密解密示例
Jul 11 PHP
php登录超时检测功能实例详解
Mar 21 PHP
php写app接口并返回json数据的实例(分享)
May 20 PHP
php版本CKEditor 4和CKFinder安装及配置方法图文教程
Jun 05 PHP
ThinkPHP登录功能的实现方法
Aug 20 #PHP
从零开始学YII2框架(五)快速生成代码工具 Gii 的使用
Aug 20 #PHP
PHP面向对象程序设计之类常量用法实例
Aug 20 #PHP
从零开始学YII2框架(四)扩展插件yii2-kartikgii
Aug 20 #PHP
PHP面向对象程序设计之接口用法
Aug 20 #PHP
从零开始学YII2框架(三)扩展插件yii2-gird
Aug 20 #PHP
从零开始学YII2框架(二)通过 Composer 安装扩展插件
Aug 20 #PHP
You might like
php快递单号查询接口使用示例
2014/05/05 PHP
Thinkphp5.0 框架视图view的比较标签用法分析
2019/10/12 PHP
js实现的日期操作类DateTime函数代码
2010/03/16 Javascript
基于jquery的兼容各种浏览器的iframe自适应高度的脚本
2010/08/13 Javascript
Node.js和PHP根据ip获取地理位置的方法
2014/03/14 Javascript
Javascript学习笔记之相等符号与严格相等符号
2014/11/23 Javascript
jquery实现简单实用的打分程序实例
2015/07/23 Javascript
javascript实现数组内值索引随机化及创建随机数组的方法
2015/08/10 Javascript
快速解决jquery.touchSwipe左右滑动和垂直滚动条冲突
2016/04/15 Javascript
Web安全测试之XSS实例讲解
2016/08/15 Javascript
微信小程序 常用工具类详解及实例
2017/02/15 Javascript
es6+angular1.X+webpack 实现按路由功能打包项目的示例
2017/08/16 Javascript
利用Vue实现一个markdown编辑器实例代码
2019/05/19 Javascript
细述Javascript的加法运算符的具体使用
2019/10/18 Javascript
viewer.js一个强大的基于jQuery的图像查看插件(支持旋转、缩放)
2020/04/01 jQuery
基于Python实现对PDF文件的OCR识别
2016/08/05 Python
Python使用Matplotlib实现雨点图动画效果的方法
2017/12/23 Python
Python爬虫——爬取豆瓣电影Top250代码实例
2019/04/17 Python
Python3匿名函数lambda介绍与使用示例
2019/05/18 Python
Python可变对象与不可变对象原理解析
2020/02/25 Python
Python环境使用OpenCV检测人脸实现教程
2020/10/19 Python
python Xpath语法的使用
2020/11/26 Python
手把手教你用Django执行原生SQL的方法
2021/02/18 Python
关于HTML5你必须知道的28个新特性,新技巧以及新技术
2012/05/28 HTML / CSS
汉米尔顿手表官网:Hamilton
2020/09/13 全球购物
Levi’s西班牙官方网站:李维斯,著名的牛仔裤品牌
2020/08/20 全球购物
SQL语言面试题
2013/08/27 面试题
学生会干部自荐信
2014/02/04 职场文书
捐书倡议书
2014/08/29 职场文书
教师创先争优承诺书
2015/04/27 职场文书
傅雷家书读书笔记
2015/06/29 职场文书
团结友爱主题班会
2015/08/13 职场文书
公司趣味运动会开幕词
2016/03/04 职场文书
python爬不同图片分别保存在不同文件夹中的实现
2021/04/02 Python
数据库的高级查询六:表连接查询:外连接(左外连接,右外连接,UNION关键字,连接中ON与WHERE的不同)
2021/04/05 MySQL
如何开发一个渐进式Web应用程序PWA
2021/05/10 Javascript