Yii2使用教程


Yii2使用教程

 

安裝

中文文檔:http://www.yiichina.com/doc/guide/2.0/start-installation

1,安裝

這里我直接下載歸檔文件,壓縮包安裝了。composer各種麻煩,國情你懂得。

https://github.com/yiisoft/yii2/releases/download/2.0.2/yii-basic-app-2.0.2.tgz

Yii 2.0 需要 PHP 5.4.0 或以上版本支持。

解壓至我的web目錄  E:\wamp\www\ibrain\

2,配置

config/web.php 第12行

 'cookieValidationKey' => '123',//若你通過 Composer 安裝,則此步驟會自動完成

 config/db.php

復制代碼
return [
    'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=localhost;dbname=ibrain',//數據庫配置
    'username' => 'root',
    'password' => '',
    'charset' => 'utf8',
   'tablePrefix'=>'ib_',//表前綴,默認沒有的,自己加上

];
復制代碼

 

 ok, 跑 http://localhost/ibrain/web/index.php

和http://localhost/ibrain/web/index.php?r=site/index?param=value 是完整路徑

運行,看到 Congratulations! 界面了。

看根目錄目錄,沒有index首頁文件,如果訪問http://localhost/ibrain會看到目錄,如果不想改host配置,那我們可以新增一個index.php咯,指向web/index.php。

header("Location:web/index.php");die;

入門HelloWorld

為了弄清楚運行的機制,我們跑一個helloworld測試。

首先看/web/index.php

復制代碼
<?php

// comment out the following two lines when deployed to production
defined('YII_DEBUG') or define('YII_DEBUG', true);//調試模式
defined('YII_ENV') or define('YII_ENV', 'dev');//前端的調試工具

require(__DIR__ . '/../vendor/autoload.php');
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');

$config = require(__DIR__ . '/../config/web.php');

(new yii\web\Application($config))->run();//這種寫法就是5.4以上才支持
復制代碼

執行后的默認首頁,是跑到/controller/SiteController.php  下的actionIndex()去了。然后調用的/view/site/index.html

那我現在要換掉默認控制器,在/config/web.php 中添加一句  'defaultRoute' => 'index', 這樣默認控制器就是/controller/IndexControllor.php的actionIndex()了。不建議修改application.php 下的public $defaultRoute = 'site'; 框架文件最好不要修改。下面是代碼

復制代碼
<?php
namespace app\controllers;
use Yii;
use yii\web\Controller;

class IndexController extends Controller
{
  public function actionIndex()
    {    
        die("Hello world!!");//訪問http://localhost/ibrain/index.php?r=index/index 
        //return $this->render('index');// /view/Index/index.html
    }
    public function actionHello()
    {    
        die("Hello world!!!!!");//http://localhost/ibrain/index.php?r=index/hello ,index.php可以省略。
    }

}
復制代碼

 數據庫操作

上面的例子跑起來后,我想要從mysql中取點數據出來耍耍。開頭我們的數據庫已經配置好了名稱為ibrain的數據庫。

 

添加一張用戶表,表結構:

復制代碼
CREATE TABLE `ib_admin` (
  `uid` int(11) NOT NULL AUTO_INCREMENT COMMENT '用戶ID',
  `gid` int(8) NOT NULL COMMENT '用戶組ID',
  `username` varchar(25) NOT NULL COMMENT '賬號',
  `password` varchar(100) NOT NULL COMMENT '密碼',
  `nickname` varchar(100) DEFAULT NULL COMMENT '昵稱',
  `sort` int(11) DEFAULT NULL COMMENT '排序',
  PRIMARY KEY (`uid`),
  KEY `group` (`gid`),
  KEY `usrname` (`username`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='用戶表';
復制代碼

下面要用yii來做CURD操作。

yii2沒有空模型,必須實體類來映射表,這點TP的ORM我比較喜歡。

復制代碼
<?php
// app/models/Admin.php  聲明Admin模型,對應admin表
namespace app\models;
use yii\db\ActiveRecord;
class Admin extends ActiveRecord
{

}
復制代碼
復制代碼
<?php
// app/controller/IndexController.php

namespace app\controllers;

use Yii;
use yii\web\Controller;
use app\models\Admin; //引入這個空間,下面才能調用靜態方法
class IndexController extends Controller {
    public function actionIndex() {
        //db方法可以參考yii2\db\下面的很多數據庫操作類,非常豐富
          $res=Admin::findAll(array('gid'=>1));
           var_dump($res);

    $query = Admin::find()->asArray()->all();//如果不想要取出來的數據時對象類型,可以用asArray方法轉換成數組
    var_dump($query);

//插10條記錄
        /* for($i=20;$i<=30;$i++){
          $admin=new Admin();
          $admin->gid=$i;
          $admin->username="admin".$i;
          $admin->password="admin".$i;
          $admin->nickname="findgor".$i;
          $admin->sort=$i;
          $admin->insert();//插入數據
          } */

        //修改
        /*$row=Admin::findOne(array("uid"=>19));//這是對於數據對象操作
          $row->username="test";
          $row->update(); */

        /* 刪除
          $row=Admin::findOne(19);
          $row->delete();
         */
    }

}
復制代碼

 下面就是yii的特色菜GII了,快速生成代碼,開啟和關閉可以在入口文件中指定  yii_env執行環境。

跑:http://localhost/ibrain/web/index.php?r=gii

可以創建很多東西,先來個模型吧,model->start

可以預覽生成的文件,使用很簡單。參考:http://www.yiichina.com/doc/guide/2.0/start-gii

?
1
2
3
4
5
6
7
8
9
再來生成curd:也就是增刪改查的代碼,會自動生成頁面。非常流弊
 
Model Class:                app\models\Info
 
Search Model Class:     app\models\InfoSearch
 
Controller Class:       app\controllers\InfoController
 
View Path:                   \views\info

  好了,生成完后,我們可以訪問一下,http://localhost/ibrain/web/index.php?r=info . 

項目演練

很多東西是需要在做項目中才能發現的,帶着問題才能更好的學習,但切記不要一遇到問題就鑽牛角尖。

下面正式修改項目。首先把頭部和尾部的修改一下吧。

尾部在布局文件中,\veiws\layout\main.php

<?= Yii::powered() ?> 這個在\yii2\BaseYii.php 465行 powered

登陸功能:

http://www.yiichina.com/tutorial/332

 =============================

在curd生成的頁面中,默認的顯示往往不足以滿足我們,所以下面來改動一下。

看模板文件內的數據列表。

復制代碼
    <p>
        <?= Html::a('創建信息', ['create'], ['class' => 'btn btn-success']) ?>
    </p>

    <?= GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [

            'id',
            'type',
            'title',
            'keyword',
            'content:ntext',
            
            ['class' => 'yii\grid\ActionColumn','header' => '操作', 'headerOptions' => ['width' => '100']],
        ],
       
    ]); ?>
復制代碼

 

1.Showing 1-5 of 39 items.  這個統計要改成中文,在基礎列表視圖類widget\BaseListView.php line:190

2.顯示的標題要修改的話,可以在model寫一個attributeLabels()方法

復制代碼
 public function attributeLabels()
    {
        return [
            'id' => '編號ID',
            'type' => '類型',
            'title' => '標題',
            'keyword' => '關鍵字',
            'content' => '內容',
        ];
    }
復制代碼

3.要改一頁顯示的條數,在生成的infosearch.php中添加配置

復制代碼
 public function search($params)
    {
        $query = Info::find();

        $dataProvider = new ActiveDataProvider([
            'query' => $query,
            'pagination' => [
                'pagesize' => '5',//一頁顯示5條數據
            ]
        ]);
復制代碼

 

那么對一個單表的操作也差不多了,但是考慮后台的復雜性,往往會出現:

1.多表關聯查詢后的記錄 

2.自定義搜索字段

3.增加字段操作,比如加一個審核。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM