安裝php
中文文檔:http://www.yiichina.com/doc/guide/2.0/start-installationhtml
1,安裝前端
這裏我直接下載歸檔文件,壓縮包安裝了。composer各類麻煩,國情你懂得。mysql
https://github.com/yiisoft/yii2/releases/download/2.0.2/yii-basic-app-2.0.2.tgzgit
Yii 2.0 須要 PHP 5.4.0 或以上版本支持。github
解壓至個人web目錄 E:\wamp\www\ibrain\web
2,配置sql
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
再來生成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.增長字段操做,好比加一個審覈。