YII2快速學習筆記

工做中須要用到YII框架,因而乎,系統的學習下這套框架,詳細教程請看考該站完整系列:YII2教程php

1、YII簡介

一、什麼是YII

Yii 是一個高性能,基於組件的 PHP 框架,用於快速開發現代 Web 應用程序。html

clipboard.png

二、YII優勢

  • 和其餘 PHP 框架相似,Yii 實現了 MVC(Model-View-Controller)設計模式並基於該模式組織代碼。mysql

  • Yii 的代碼簡潔優雅,這是 Yii 的編程哲學。它永遠不會爲了要迎合某個設計模式而對代碼進行過分的設計。jquery

  • Yii 是一個全棧框架,提供了大量久經考驗,開箱即用的特性,例如:對關係型和 NoSQL 數據庫都提供了查詢生成器(QueryBuilders)和 ActiveRecord;RESTful API 的開發支持;多層緩存支持,等等。linux

  • Yii 很是易於擴展。你能夠自定義或替換幾乎任何一處核心代碼。你還會受益於它堅實可靠的擴展架構,使用、再開發或再發布擴展。git

  • 高性能始終是 Yii 的首要目標之一。github

3.Yii 版本

Yii 當前有兩個主要版本:1.1 和 2.0。 1.1 版是上代的老版本,如今處於維護狀態。2.0 版是一個徹底重寫的版本,採用了最新的技術和協議,包括依賴包管理器(Composer)、PHP 代碼規範(PSR)、命名空間、Traits(特質)等等。 2.0 版表明了最新一代框架,是將來幾年中咱們的主要開發版本。因此,咱們學習2.0版本。web

2、安裝YII2

1.使用composer安裝

什麼是Composer? 因爲牆的緣由,會下載很慢,因此,這裏咱們使用Composer中國鏡像sql

啓用本鏡像服務,系統全局配置: 即將配置信息添加到 Composer 的全局配置文件 config.json 中。數據庫

composer config -g repo.packagist composer https://packagist.phpcomposer.com

2.第二步

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目錄

3.下載yii

php composer.phar create-project --prefer-dist yiisoft/yii2-app-advanced advanced

全局安裝方法:

composer create-project --prefer-dist yiisoft/yii2-app-advanced advanced

前最好有github帳號,須要受權拉取的,否則。。。。

clipboard.png

坑爹啊,還須要Github受權-_-!!!

clipboard.png

輸入這個連接,在瀏覽器中打開,須要登陸到本身的Github帳戶:

https://github.com/settings/tokens/new?scopes=repo&description=Composer+on+kaiyideMacBook-Pro.local+2016-12-31+0302

clipboard.png
獲取到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)

4.下載好YII後,初始化操做

若是你是類linux系統,切換到advanced目錄執行php init命令進行初始化,若是你是windows系統,請雙擊advanced目錄下的init.bat文件

php init

5.服務器配置

5.1 更改hosts文件內容

127.0.0.1 www.demo.com
127.0.0.1 admin.demo.com

5.2 更改apache服務器設置

(更改完成後須要重啓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訪問,成功了^_^

clipboard.png

若是跳轉到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

3、第一個程序-Hello,world

先來看幾個重要的文件夾:

// 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哦

訪問第一個測試文件前的配置:

  1. 首先咱們先配置下域名yii.dev指向frontendweb目錄,咱們後文所指的該域名均指向這裏。

  2. 在frontendcontrollers目錄下新建TestController.php文件,內容參考上面咱們建立Test控制器的代碼。

地址欄輸入http://www.yii.dev/index.php?...訪問看看結果

clipboard.png

若是須要傳遞參數,則是這樣:
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出現了這樣的問題:

clipboard.png

➜  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)

clipboard.png

禍不單行,使用gii Module Gnenrator又出現了這樣了問題,鬱悶啊。。。

clipboard.png

找了許多答案,終於找到了兩個靠譜的解決方案:

快速解決方法;把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,再次訪問,問題解決:

clipboard.png

migration遷移文件步驟

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實戰式教程

相關文章
相關標籤/搜索