工做中须要用到YII框架,因而乎,系统的学习下这套框架,详细教程请看考该站完整系列:YII2教程php
Yii 是一个高性能,基于组件的 PHP 框架,用于快速开发现代 Web 应用程序。html
和其余 PHP 框架相似,Yii 实现了 MVC(Model-View-Controller)设计模式并基于该模式组织代码。mysql
Yii 的代码简洁优雅,这是 Yii 的编程哲学。它永远不会为了要迎合某个设计模式而对代码进行过分的设计。jquery
Yii 是一个全栈框架,提供了大量久经考验,开箱即用的特性,例如:对关系型和 NoSQL 数据库都提供了查询生成器(QueryBuilders)和 ActiveRecord;RESTful API 的开发支持;多层缓存支持,等等。linux
Yii 很是易于扩展。你能够自定义或替换几乎任何一处核心代码。你还会受益于它坚实可靠的扩展架构,使用、再开发或再发布扩展。git
高性能始终是 Yii 的首要目标之一。github
Yii 当前有两个主要版本:1.1 和 2.0。 1.1 版是上代的老版本,如今处于维护状态。2.0 版是一个彻底重写的版本,采用了最新的技术和协议,包括依赖包管理器(Composer)、PHP 代码规范(PSR)、命名空间、Traits(特质)等等。 2.0 版表明了最新一代框架,是将来几年中咱们的主要开发版本。因此,咱们学习2.0版本。web
什么是Composer? 因为墙的缘由,会下载很慢,因此,这里咱们使用Composer中国镜像。sql
启用本镜像服务,系统全局配置: 即将配置信息添加到 Composer 的全局配置文件 config.json 中。数据库
composer config -g repo.packagist composer https://packagist.phpcomposer.com
php composer.phar global require "fxp/composer-asset-plugin:~1.1.1"
若是你的Composer是全局安装的,那么就不须要输入php composer.phar
,只须要用composer
命令便可。
composer global require "fxp/composer-asset-plugin:~1.1.1"
安装这个玩意儿,否则你会发现新增长好的项目中没有vendor目录
php composer.phar create-project --prefer-dist yiisoft/yii2-app-advanced advanced
全局安装方法:
composer create-project --prefer-dist yiisoft/yii2-app-advanced advanced
前最好有github帐号,须要受权拉取的,否则。。。。
坑爹啊,还须要Github受权-_-!!!
输入这个连接,在浏览器中打开,须要登陆到本身的Github帐户:
https://github.com/settings/tokens/new?scopes=repo&description=Composer+on+kaiyideMacBook-Pro.local+2016-12-31+0302
获取到Token受权以后,复制粘贴到这里:
Head to https://github.com/settings/tokens/new?scopes=repo&description=Composer+on+kaiyideMacBook-Pro.local+2016-12-31+0311 to retrieve a token. It will be stored in "/Users/kaiyiwang/.composer/auth.json" for future use by Composer. Token (hidden):(注意这里是从Github获取到的受权Token) Token stored successfully. Reading bower.json of bower-asset/jquery.inputmask (3.2.5)
若是你是类linux系统,切换到advanced目录执行php init命令进行初始化,若是你是windows系统,请双击advanced目录下的init.bat文件
php init
127.0.0.1 www.demo.com 127.0.0.1 admin.demo.com
(更改完成后须要重启Apache服务器)
更改apache下conf/extra/httpd-vhosts.conf
<VirtualHost *:80> DocumentRoot "位置\advanced\frontend\web" ServerName www.demo.com ServerAlias www.demo.com </VirtualHost> <VirtualHost *:80> DocumentRoot "位置\advanced\backend\web" ServerName admin.demo.com ServerAlias admin.demo.com </VirtualHost>
配置完成后打开浏览器,输入配置的本地域名:www.yii.dev访问,成功了^_^
若是跳转到apache服务器,还须要将apache
httpd-conf中Include conf/extra/httpd-vhosts.conf
前面的#注释去掉,重启apache服务器便可
安装小结:
一、经过官网或Composer下载Yii
二、解压后拷贝advanced目录放到web可访问目录,文件名advanced,不作改动
三、若是你是类linux系统,切换到advanced目录执行php init命令进行初始化,若是你是windows系统,请双击advanced目录下的init.bat文件
四、接下来会让咱们选择开发环境 0开发环境 1生产环境 这里咱们选择0 开发环境,输入后回车,会让咱们输入yes或者no进行确认,这里咱们输入yes确认便可
五、ok了以后,你仍然须要作得是切换到根目录下,执行命令composer install
六、验证下是否安装成功了,这个时候你能够在浏览器地址栏输入http://localhost/advanced/fro...看效果了,界面上显示一个大大的Congratulations即表明安装成功!
更多详情请参考该博文:yii2入门-安装 Yii2
先来看几个重要的文件夹:
// 1.视图文件夹: frontend\views\ // 2.控制器 frontend\controllers\ // 3.Model层 frontend\model\
再来看一段程序TestController.php
namespace frontend\controllers; use yii\web\Controller; class TestController extends Controller { public function actionIndex () { return $this->render('index'); } public function actionCreate () { } }
建立模板:frontend/views/test/index.php
<?php /** * Created by PhpStorm. * User: kaiyiwang * Date: 16/12/31 * Time: 17:22 */ ?> <div class="test-index"> <h1>Hello World!</h1> </div>
Yii2语法规定:声明的控制器必须带上Controller后缀,同时操做必须带上前缀action!
yii2中操做名(action)遵循驼峰式命名,也就是说若是你是多个单词,请保证你的命名规则是actionCreateArticle
而不是actionCreatearticle!固然,这只是一种规范,你不这样作也没人拦你。须要提醒注意的是多个单词驼峰式命名,访问操做的时候,多个单词须要像create-article这样用链接符链接而不是createArticle哦
访问第一个测试文件前的配置:
首先咱们先配置下域名yii.dev指向frontendweb目录,咱们后文所指的该域名均指向这里。
在frontendcontrollers目录下新建TestController.php文件,内容参考上面咱们建立Test控制器的代码。
地址栏输入http://www.yii.dev/index.php?...访问看看结果
若是须要传递参数,则是这样:
http://www.yii.dev/index.php?...
public function actionIndex($name) { return $this->render('index', [ 'name' => $name, ]); }
修改模板:
<div class="test-index"> <h1>Hello <?= yii\helpers\Html::encode($name) ?>!</h1> </div>
使用迁移命令migration出现了这样的问题:
➜ advanced yii migrate/create create_blog_table zsh: command not found: yii ➜ advanced
什么缘由呢???
原来Mac下的迁移命令是php yii
:
➜ advanced php yii migrate/create create_blog_table Yii Migration Tool (based on Yii v2.0.10)
祸不单行,使用gii Module Gnenrator又出现了这样了问题,郁闷啊。。。
找了许多答案,终于找到了两个靠谱的解决方案:
快速解决方法;把Yii根目录下的/common/config/mail-local.php 文件中的localhost改为127.0.0.1
根本问题解决方法;windows不会出现这种问题,mac容易出现这种问题,是由于mac里面原本就有一个PHP了,若是还用XAMPP的话,这个时候就有两个PHP,但若是不通过配置,命令行方式的PHP默认执行的是系统自带的,因此要修改默认执行的PHP
修改方法: 找到Yii根目录下的/yii文件打开,
第一行#!/usr/bin/env php 改为 #!/usr/bin/env /Applications/XAMPP/xamppfiles/bin/php
而后重启服务器再试试:)
这里咱们使用第一种简单的方法,改下配置文件,/common/config/mail-local.php
,将localhost改成127.0.0.1
.
<?php return [ 'components' => [ 'db' => [ 'class' => 'yii\db\Connection', // 'dsn' => 'mysql:host=localhost;dbname=yii', 'dsn' => 'mysql:host=127.0.0.1;dbname=yii', 'username' => 'root', 'password' => '518666', 'charset' => 'utf8', ], 'mailer' => [ 'class' => 'yii\swiftmailer\Mailer', 'viewPath' => '@common/mail', // send all mails to a file by default. You have to set // 'useFileTransport' to false and configure a transport // for the mailer to send real emails. 'useFileTransport' => true, ], ], ];
OK,再次访问,问题解决:
1.使用php yii migrate命令生成博客 blog 对应的数据表迁移:
// 1.使用php yii migrate命令生成博客 blog 对应的数据表迁移: php yii migrate/create create_blog_table
2.生成的迁移文件中添加字段
// 2. advanced\console\migrations 目录,可能你已经注意到了,yii migrate 命令已经在迁移文件中为咱们添加了主键ID和表名,接下来咱们要编辑该文件修改表名以及添加更多的列到数据表blog: $this->createTable('blog', [ 'id' => $this->primaryKey(), 'title' => $this->string(100)->notNull()->defaultValue(''), 'content' => $this->text(), 'create_time' => $this->datetime(), ]);
3.迁移文件生成表字段
./yii migrate
参考文章:
yii2实战式教程