yii2實(shí)戰(zhàn)教程之新手入門指南-簡單博客管理系統(tǒng),yii2新手入門_PHP教程
Jul 12, 2016 am 08:50 AMyii2實(shí)戰(zhàn)教程之新手入門指南-簡單博客管理系統(tǒng),yii2新手入門
1、簡介
快速入門指南會(huì)對Yii2框架做一個(gè)基本介紹,包括數(shù)據(jù)庫遷移、gii操作、AR模型、路由、驗(yàn)證、視圖等等。如果你是個(gè)Yii2新手甚至之前對PHP框架也很陌生,那么這里將會(huì)成為你的良好起點(diǎn)。如果你已經(jīng)使用并且掌握了Yii2框架基礎(chǔ),可以期待Yii2高級(jí)篇教程(后面我會(huì)更新)。
為了演示Yii2特性的基本使用,我將會(huì)帶領(lǐng)大家構(gòu)建一個(gè)簡單的博客管理系統(tǒng)。
本教程完整的代碼后期會(huì)公開于github上。
2、安裝
我們前面寫過關(guān)于Yii2完整版的安裝教程,你可以點(diǎn)擊進(jìn)行參考,這里只做步驟,不再做必要的講解。
composer <span>global</span> <span>require</span> "fxp/composer-asset-plugin:~1.1.1"<span> composer create</span>-project yiisoft/yii2-app-advanced advanced 2.0.8<span> cd advanced php init<br /></span>
#之后構(gòu)建本地環(huán)境,我們配置advanced.dev指向frontend/web目錄
3、準(zhǔn)備好數(shù)據(jù)庫
在開發(fā)和維護(hù)一個(gè)數(shù)據(jù)庫驅(qū)動(dòng)的應(yīng)用程序時(shí),數(shù)據(jù)庫的結(jié)構(gòu)會(huì)隨代碼的改變而改變。例如,在開發(fā)應(yīng)用程序的過程中,會(huì)增加一張新表且必須得加進(jìn)來; 在應(yīng)用程序被部署到生產(chǎn)環(huán)境后,需要建立一個(gè)索引來提高查詢的性能等等。 因?yàn)橐粋€(gè)數(shù)據(jù)庫結(jié)構(gòu)發(fā)生改變的時(shí)候源代碼也經(jīng)常會(huì)需要做出改變,Yii 提供了一個(gè) 數(shù)據(jù)庫遷移 功能,該功能可以記錄數(shù)據(jù)庫的變化, 以便使數(shù)據(jù)庫和源代碼一起受版本控制。
在本例中,我們使用yii migrate
命令生成博客 blog 對應(yīng)的數(shù)據(jù)表遷移:
yii migrate/create create_blog_table
該命令生成的遷移文件位于 advanced\console\migrations 目錄,可能你已經(jīng)注意到了,yii migrate 命令已經(jīng)在遷移文件中為我們添加了主鍵ID和表名,接下來我們要編輯該文件修改表名以及添加更多的列到數(shù)據(jù)表blog:
<?<span>php </span><span>use</span><span> yii\db\Migration; </span><span>/*</span><span>* * Handles the creation for table `blog_table`. </span><span>*/</span> <span>class</span> m160525_153315_create_blog_table <span>extends</span><span> Migration { </span><span>/*</span><span>* * @inheritdoc </span><span>*/</span> <span>public</span> <span>function</span><span> up() { </span><span>$this</span>->createTable('blog',<span> [ </span>'id' => <span>$this</span>->primaryKey(), 'title' => <span>$this</span>-><span>string</span>(100)->notNull()->defaultValue(''), 'content' => <span>$this</span>->text(), 'create_time' => <span>$this</span>->datetime(),<span> ]); } </span><span>/*</span><span>* * @inheritdoc </span><span>*/</span> <span>public</span> <span>function</span><span> down() { </span><span>$this</span>->dropTable('blog'<span>); } }</span>
運(yùn)行遷移之前,我們先把數(shù)據(jù)庫配置一番,打開common\config\main-local.php文件,我們看到components下面的db配置,參考如下配置就好
'components' =><span> [ </span>'db' =><span> [ </span>'class' => 'yii\db\Connection', <span>//</span><span> 修改host 和dbname 之前需要手動(dòng)創(chuàng)建了dbname才可以</span> 'dsn' => 'mysql:host=localhost;dbname=advanced', <span>//</span><span>登錄數(shù)據(jù)庫的賬號(hào)</span> 'username' => 'root', <span>//</span><span>登錄數(shù)據(jù)庫的密碼</span> 'password' => '', 'charset' => 'utf8',<span> ]</span>, <span>//</span><span> other code</span> ],
數(shù)據(jù)庫配置好了之后,運(yùn)行執(zhí)行如下命令運(yùn)行migrate
./yii migrate
期間會(huì)讓我們確認(rèn),yes后回車即可,該命令會(huì)為我們創(chuàng)建遷移文件(console\migrations目錄)中定義的所有數(shù)據(jù)表,執(zhí)行完該命令打開數(shù)據(jù)庫會(huì)發(fā)現(xiàn),我們的blog表已經(jīng)創(chuàng)建了,其中包含了在遷移中定義的列。
4、使用gii生成AR模型和CRUD
gii是yii2中的一個(gè)模塊,是一種高度可定制和可擴(kuò)展的代碼生成工具。使用它可以大幅提高我們的開發(fā)效率,后面我會(huì)也會(huì)講解如何用gii定制我們需要的模版以及程序代碼。如果你在安裝的過程中,像我們一樣選擇的是開發(fā)環(huán)境,gii默認(rèn)是開啟的。也就是說我們無需再進(jìn)行配置便可以使用。你也可以打開文件 advanced\frontend\config\main-local.php查看配置代碼。
<span>if</span> (!<span>YII_ENV_TEST) { </span><span>//</span><span> other code</span> <span>$config</span>['bootstrap'][] = 'gii'<span>; </span><span>$config</span>['modules']['gii'] =<span> [ </span>'class' => 'yii\gii\Module',<span> ]; }</span>
接著通過地址 http://advanced.dev/index.php?r=gii 訪問gii模塊(在一開始我們配置了advanced.dev指向了frontend/web目錄),借助其特性幫助我們生成此次操作所必需的一系列代碼。
4.1生成AR模型類
模型是MVC設(shè)計(jì)模式中的一部分,使用模型不僅能讓我們存取數(shù)據(jù)變得相對簡單和方便,更多地協(xié)助我們處理復(fù)雜的業(yè)務(wù)和邏輯。關(guān)于更多的有關(guān)模型的描述,可以參考相關(guān)手冊或文檔,有任何問題你也可以下方留言。
我們回過頭來點(diǎn)擊gii頁面上的Model Generator start,像下面這樣生成AR模型類。
4.2生成CRUD代碼
所謂的CRUD無非就是Create Read Update Delete,也就是創(chuàng)建、讀取、更新和刪除。包含了常見Web開發(fā)的基本操作。如果你剛剛用gii生成了Model,此時(shí)點(diǎn)擊左側(cè)菜單CRUD Generator像下面這樣生成crud再好不過了。
關(guān)于更多gii的操作你可以參考yii2 gii的詳細(xì)操作步驟。
目前為止,我們借助gii生成了model,curd一系列操作。
有好提示:實(shí)際開發(fā)中,后臺(tái)管理理應(yīng)利用gii協(xié)助開發(fā),可快速提高開發(fā)效果。
按照以上操作,我們會(huì)在如下相關(guān)目錄生成9個(gè)文件
common\models\Blog.<span>php common\models\BlogSearch</span>.<span>php frontend\controllers\BlogController</span>.<span>php frontend\views\blog\_form</span>.<span>php frontend\views\blog\_search</span>.<span>php frontend\views\blog\create</span>.<span>php frontend\views\blog\index</span>.<span>php frontend\views\blog\update</span>.<span>php frontend\views\blog\view</span>.php
接著可以通過路由訪問http://advanced.dev/index.php?r=blog看到blog具體頁面信息。
5、添加博客
5.1添加前準(zhǔn)備
[考慮目前國內(nèi)網(wǎng)站大部分采集文章十分頻繁,更有甚者不注明原文出處,原作者更希望看客們查看原文,以防有任何問題不能更新所有文章,避免誤導(dǎo)!]
繼續(xù)閱讀

? AI ??

Undress AI Tool
??? ???? ??

Undresser.AI Undress
???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover
???? ?? ???? ??? AI ?????.

Clothoff.io
AI ? ???

Video Face Swap
??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

?? ??

??? ??

???++7.3.1
???? ?? ?? ?? ???

SublimeText3 ??? ??
??? ??, ???? ?? ????.

???? 13.0.1 ???
??? PHP ?? ?? ??

???? CS6
??? ? ?? ??

SublimeText3 Mac ??
? ??? ?? ?? ?????(SublimeText3)

??? ??











Dewu APP? ?? ?? ?? ?? ??? ?? ???????? ???? ???? Dewu APP? ??? ???? ??? ????. ???? ???? Dewuduo? ????? ?????. ?? ?? ???? ?? ??? ? ????! Dewu ???? ???? [2024-03-20] Dewu ???? ???? [2024-03-20] Dewu ?? ?? ?? [2024-03-20] Dewu ??? ???? ?? ?? [2024-03- 20] ?? ?? ?? ?? ?? [2024-03-20] ?? ??? ?? [2024-03-20] ?? VIP ?? ?? [2024-03-20] ?? ??, ?? ?? ??

??? VSCode ??: ?? ??? ????? ???? Visual Studio Code(??? VSCode)? ????? ???? ?? ?? ?????. ???? ???? ???? ?? VSCode? ??? ?????? ???? ?? ???? ??? ? ????. ? ????? VSCode? ??? ?????? ???? ??? ??? ???? ?? ?? ??? ???? ??? ???? ?????. 1??: ?? ?? ?????? ?????. VSCode? ? ? ??? ?????.

??? ?? ?? ??? ???? ?? ?? ??? ?? ??? ???? ?? ? ? ????. ? ?? ???? ? ? ?? ?? ?? ????, ?? ??????. ???? ???? ??? ? ?? ??? ????. ??, ?? ?? ??? ???? ??, ??, ??? ?? ??? ????. ??? ?? ?? ? ??? ???? ?? ?? ?? ????. ??? ???? ??? ??, ?, ?? ??? ??? ?? ?? ??? ????? ?? ?? ??? ????, ?? ? ? ? ?? ??? ? ?? ??? ?? ????. ??? ???? ??? ? ??? ??? ???? ???? ??? ?? ? ????? 1. ???? ?????. ??? ??? ?? ??? ???? ?? ?? ???? ?????. ?, ??? ???? ???? ?? ?? ???? ???? ??? ??? ????.

PhotoshopCS? Photoshop Creative Suite? ??? Adobe?? ??? ????????. ??? ??? ? ??? ??? ?? ?????. PS? ?? ??? ????? ??? photoshopcs5? ????, photoshopcs5? ???? ??? ?? ???????. . 1. Photoshop CS5? ?? ????????? Adobe Photoshop CS5 Extended? ??, ??? ? ????? ??? ???, 3D ? ?????? ???? ??? ? ? ????, ????? ? ?? ??? ????? ??????. 3D ???? ????? ?? 2D ?? ???? ?????. ?? ??? ??

PHP ??: ???? ??? ??? ???? ?? ?? ?? ???? ??? ???? ?? ???? ???? ??? ??? ?? ?????. ? ??? ? ?? ??? 0? 1??, ? ???? ??? ???? ? ??? ????. ?? ? ??? ????. ???? ??? ?? ? ??? 0,1,1.2,3,5,8,13,21 ????. PHP??? ??? ??? ?? ???? ??? ??? ? ????. ????? ? ? ??? ????????.

PHP ????: Int ??? ???? ???? ?? PHP??? ?? ???? ???? ???? ?? ???? ?????. ? ??????? ?? ?? ??? ????? PHP? ?? ??? ???? int ??? ???? ???? ??? ?????. ??? ??: PHP??? ???? ???? ?? ???? ???? ??? ? ????. ? ??? ?? ?????. ?? ??? ?? (???)? ???? ???? ?????. ??? ??? ?? ?????.

???? ???? ??? ??? ?, ?? ?? ???? ?? ???? ??? ???? ??? ????. ?? ???? ????? ??? ??? ? Shift ?? ??? ? ??? ?? ??? ??? ????. ?? ???? ????? ????? ? ?? ??? ??? ???, ???? ?? ????. ?? ???? ?? ?? ??? ?? ??? ???? ? ?? ????. ??? ??? ???????. ?? ??? ???? ?? ???? ???.

1. ?? ??? ???. 2. ??? ??? [+]? ?????. 3. QR??? ????? ??? ?????. 4. ??? ??? ?? ? ?? ?? ?? ?????. 5. ???? ????? ????? ?????.
