工做中須要用到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實戰式教程