1. Yii 概述
Yii Framework 是一个
高性能的,适用于开发 WEB2.0 应用的 PHP 框架。
Yii 自带了丰富的功能 ,包括 MVC,DAO/ActiveRecord,I18N/L10N,缓存,身份验证和基于角色的访问控制,脚手架,测试等,可显著缩短开发时间。
Yii 是纯面向对象的,基于组件的,用于开发大型 Web 应用的高性能 PHP 框架。从面向对象的角度来说,它比 TP 框架要好,但 TP 框架使用起来比 Yii 框架简单。
2. Yii 准备工作
Yii 2.0 对运行环境的要求:
需要 PHP 5.4.0 或以上版本
PHP 需要开启PDO的扩展(如果使用MySQL数据库,就开启php_pdo_mysql.dll)
缓存支持(memcache、redis或apc),安装相应的php扩展和对应的软件
3. 安装 Yii
你可以通过两种方式安装 Yii:使用 Composer 或下载一个归档文件。 推荐使用前者,这样只需执行一条简单的命令就可以安装新的扩展或更新 Yii 了。
3.1 通过 Composer 安装
如果你的系统还未安装 Composer,你就需要先安装 Composer,具体可参考 Composer 中文网
Composer 安装好后,切换到一个可通过 Web 访问的目录(如:E:\xampp\htdocs)
(使用 composer 安装软件包时,建议启用本镜像服务,来加快下载速度,启用本镜像服务的方法,可参考: http://pkg.phpcomposer.com/)
先运行下面的命令,来安装 Composer Asset 插件:
composer global require "fxp/composer-asset-plugin:^1.2.0"
安装完 Composer Asset 插件后,再来安装 Yii2 的基本应用程序模板(Yii 2.0 的基础版本 -> basic),运行下面的命令:
composer create-project yiisoft/yii2-app-basic basic 2.0.9
如果想要安装 Yii2 的高级应用程序模板(Yii 2.0 的高级版本 -> advanced),就运行下面的命令:
composer create-project yiisoft/yii2-app-advanced advanced 2.0.9
注意:通过 composer 安装 Yii 2.0 的过程中,可能会提示你输入 GitHub 账户的授权 token,用于验证权限。故你必须要有一个 GitHub 账户,然后按照命令行的提示进入指定网页,生成token,将token输入到命令行中,继续安装。
3.2 从归档文件安装
下载以下归档文件之一,然后将其解压到一个Web服务器的根目录(如 E:\xampp\htdocs):
- Yii2的基本应用程序模板
- Yii2的高级应用程序模板
基础版:即
Yii2 的基本应用程序模板(basic 版本),只有一个入口文件,是 basic/web 目录下的 index.php
高级版:
即
Yii2 的高级应用程序模板(advanced 版本), 有两个入口文件(前台入口和后台入口),分别是 advanced/frontend/web 目录下的index.php 和 advanced/backend/web 目录下的index.php
5. 设置cookieValidationKey
(仅 Yii 基础版需要设置)
修改 basic/config/web.php 文件,给 cookieValidationKey 配置项 添加一个密钥(若你通过 Composer 安装,则此步骤会自动完成):
// !!! 在下面设置一个密钥, 以供 cookie validation 的需要
'cookieValidationKey' =>
md5('basic-2016')
,
修改apache的虚拟主机配置文件(
E:\xampp\apache\conf\extra\
httpd-vhosts.conf)
NameVirtualHost *:80
########## Yii 2.0 基础版 ##########
<VirtualHost *:80>
ServerName
www.basic.com
ServerAlias basic.com
DocumentRoot "E:\xampp\htdocs\basic\web"
ErrorLog "logs/basic.com-error.log"
CustomLog "logs/basic.com-access.log" common
</VirtualHost>
########## Yii 2.0 基础版 ##########
########## Yii 2.0 高级版 ##########
<VirtualHost *:80>
ServerName
www.yii.frontend.com
ServerAlias yii.frontend.com
DocumentRoot "E:\xampp\htdocs\advanced\frontend\web"
ErrorLog "logs/yii.frontend.com-error.log"
CustomLog "logs/yii.frontend.com-access.log" common
</VirtualHost>
<VirtualHost *:80>
ServerName
www.yii.backend.com
ServerAlias yii.backend.com
DocumentRoot "E:\xampp\htdocs\advanced\backend\web"
ErrorLog "logs/yii.backend.com-error.log"
CustomLog "logs/yii.backend.com-access.log" common
</VirtualHost>
########## Yii 2.0 高级版 ##########
配置好虚拟主机后,请修改本机的host文件(设置IP和域名的映射关系),然后重启Apache,打开浏览器,输入:
http://basic.com/
如果能正常打开Yii的提示页, 如提示 "
Congratulations!",则说明 Yii 2.0 安装成功,且虚拟主机配置也成功了。
如果使用的是 Yii 2.0 的高级版,则需要先初始化 Yii 应用,初始化方法如下:
打开 cmd,切换至项目根目录(如
E:\xampp\htdocs\advanced),运行下面的命令:
php init
出现一个选择提示:
[ 0 ] Development
[ 1 ] Production
( 0 表示初始化为开发环境,1表示初始化为生产环境)
这里我们输入 0,即表示将 Yii 应用初始化为开发环境。
初始化完成之后,打开浏览器,输入:
http://yii.frontend.com
,可访问前台页面;输入:
http://yii.backend.com
,可访问后台登录界面。
7. 创建第一个控制器
基础版:
在 E:\xampp\htdocs\basic\controllers 目录下创建一个
IndexController.php 文件,内容如下:
<?php
namespace app\controllers;
use yii\web\Controller;
class IndexController extends Controller
{
public function actionIndex(){
echo "欢迎使用 Yii2.0 基本应用!";
}
}
在浏览器地址栏输入:
http://basic.com/index.php?r=index/index
,就可以访问对应控制器里的方法。
高级版:
在
E:\xampp\htdocs\advanced\backend\controllers 目录(后台控制器目录)下创建一个 IndexController.php 文件,内容如下:
<?php
namespace backend\controllers;
use yii\web\Controller;
class IndexController extends Controller
{
public function actionIndex(){
echo '欢迎使用 Yii 2.0 高级应用后台管理系统!';
在浏览器地址栏输入:
http://yii.backend.com/index.php?r=index/index,就可以访问后台对应控制器里的方法。
在
E:\xampp\htdocs\advanced\frontend\controllers 目录(前台控制器目录)下创建一个 IndexController.php 文件,内容如下:
<?php
namespace frontend\controllers;
use yii\web\Controller;
class IndexController extends Controller
{
public function actionIndex(){
echo '欢迎访问 Yii 2.0 高级应用前台页面!';
}
}
在浏览器地址栏输入:
http://yii.frontend.com/index.php?r=index/index
,就可以访问前台对应控制器里的方法。
8. 开启 pathinfo 模式
下面都以基础版为例,高级版类似。
修改 basic/config 目录下的 web.php,在$config = [ 'components'=>[ 加到这里 ] ]中加入:
urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
],
],
或者,如果
urlManager 所指向的数组已存在,去掉注释即可。
就可以通过 pathinfo 的形式访问控制器里面的方法,如:
http://basic.com/index.php/index/index
设置伪静态:
在
urlManager 所指向的数组中,加入如
下代
码:
'suffix'=>'.html',
就可以这样访问:
http://basic.com/index.php/index/index.html
隐藏入口文件 index.php:
web服务器需要开启 mod_rewrite(url重写模块),在 basic/web 目录下,新建一个文件,命名为 .htaccess,内容如下:
# 开启 mod_rewrite 用于美化 URL 功能的支持(译注:对应 pretty URL 选项)
RewriteEngine on
# 如果请求的是真实存在的文件或目录,直接访问
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# 如果请求的不是真实文件或目录,分发请求至 index.php
RewriteRule . index.php
# ...其它设置...
另外一种方法:
将该url重写规则,用 Directory 标签包裹,然后写入虚拟主机配置文件 httpd-vhosts.conf 对应的标签(<VirtualHost *:80> ... </VirtualHost>)内部,如下:
NameVirtualHost *:80
########## Yii 2.0 基础版 ##########
<VirtualHost *:80>
ServerName www.basic.com
ServerAlias basic.com
DocumentRoot "E:\xampp\htdocs\basic\web"
ErrorLog "logs/basic.com-error.log"
CustomLog "logs/basic.com-access.log" common
<Directory "E:\xampp\htdocs\basic\web">
# 开启 mod_rewrite 用于美化 URL 功能的支持(译注:对应 pretty URL 选项)
RewriteEngine on
# 如果请求的是真实存在的文件或目录,直接访问
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# 如果请求的不是真实文件或目录,分发请求至 index.php
RewriteRule . index.php
# ...其它设置...
</Directory>
</VirtualHost>
########## Yii 2.0 基础版 ##########
重启 Apache 服务器,就可以这样访问:http://basic.com/index/index.html