摘要:出于實戰基礎加之自語言的書籍出版以來,幾乎所有的編程書籍都講述了一個的例子作為開始。操作,其實就是一個是動作的意思,也可以描述為我們前面說的響應地址。
作者:白狼 出處:http://www.manks.top/document/yii_first_application.html 本文版權歸作者,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
之前考慮過要不要砍掉該章節,直接上手教你搭建簡單的博客系統。出于實戰基礎加之自C語言的書籍出版以來,幾乎所有的編程書籍都講述了一個Hello World的例子作為開始。雖然我們僅僅是學習Yii2,但是好歹我們這也是高大上的Yii嘛,我們也尊重傳統,來一段Hello World快速入門!
我將學會什么
了解到MVC設計模式中的V和C是什么
如何創建一個操作(action)
如何創建對應的視圖文件(模板)
簡單了解到操作的命名規范
什么是路由
開始之前的準備
Yii是什么?為什么要學Yii呢?是啥,就是一個框架,如果要加一些形容詞,我覺得高性能、易擴展等詞最適合不過了。
MVC相信就不用多說了,Yii2無疑更好的基于MVC對代碼進行了一定的組織。簡潔優雅不說......我們還是不拍yii馬屁了,說重點。
我們知道,客戶端像服務端發起一個請求,服務端是必須要有對應的響應地址才是可以的。這個響應的地址在Yii2中又是怎么進行描述的呢?先來介紹下什么是操作。
操作,其實就是一個action(action是動作的意思),也可以描述為我們前面說的響應地址。TA是控制器(controller)的組成部分,再說白了其實就是類(class)的操作方法(function)。
如何創建一個操作呢?給類創建一個方法你會不,非要說的那么白才明白不是太好,對吧。
也就是說我們需要先有一個類(控制器)唄,沒錯!如下示例就是包含了兩個操作 index 和create的控制器test。
namespace frontendcontrollers; use yiiwebController; class TestController extends Controller { public function actionIndex () { } public function actionCreate () { } }
有同學要較真了,控制器不是test嗎,為啥你的是TestController?還有啊,說好的操作名是index和create為啥你的都有前綴action?controller跟action去掉可不可以?答:不可以,必須帶上!Yii2規定:聲明的控制器必須帶上Controller后綴,同時操作必須帶上前綴action!
通常情況下,控制器用來處理請求有關的資源類型,其實就是做一些操作的,比如我們要處理文章之類的數據,控制器應命名為Article恰當些,盡量做到見名知意。Action當然也是如此,比如我們要創建一篇文章,action理應為add或者create為妙。
那有同學要說了,我就想叫操作名為createArticle怎么辦?天兒熱,先涼拌著,慢慢說。
yii2中操作名(action)遵循駝峰式命名,也就是說如果你是多個單詞,請保證你的命名規則是actionCreateArticle而不是actionCreatearticle!當然,這只是一種規范,你不這樣做也沒人攔你。需要提醒注意的是多個單詞駝峰式命名,訪問操作的時候,多個單詞需要像create-article這樣用連接符連接而不是createArticle哦
接下來我們訪問已經創建好的操作:
首先我們先配置下域名advanced.dev指向frontendweb目錄,我們后文所指的該域名均指向這里
地址欄輸入 http://advanced.dev/index.php?r=test/index 訪問看看結果,我們會發現一片空白,什么也沒有!很明顯,我們的的操作方法index里空空如也,沒做任何輸出。要不我們做點什么?別急,我們先來看看這個地址,TA究竟做了什么,為什么能請求到我們指定的操作。
這就需要我們引入一個新的概念-路由。感覺挺好哈,這名字都沒聽過。不過不要緊,我換個說法你就明白了,訪問地址,路由就是我們的訪問地址!明白了吧,TA就是用于定位控制器操作的地址!我們這里重點是講明白概念,不做深究,具體細節需要的可以去查看官方文檔。
輸出Hello World!
該明白的該說的都說了,饒了一大圈終于該說本篇文章的重點了-輸出Hello World。艾瑪,可把我憋壞了。
public function actionIndex () { echo "Hello World!"; }
現在在回過來看看,是不是很簡單!
我們改變點什么,看看如何動態的輸出Hello Ketty,Hello Anmy?
public function actionIndex ($name) { echo "Hello {$name}!"; }
該操作方法接收一個參數name,理應程序上會輸出Hello, xxx的字樣。
現在我們依然訪問 http://advanced.dev/index.php?r=test/index 會發現頁面報錯了,提示錯誤缺少參數:name!也就是說,我們訪問該操作時應該傳進來一個參數name!我們把地址修改為 http://advanced.dev/index.php?r=test/index&name=Kitty ,這個時候頁面正常輸出了Hello Kitty!手動修改地址欄的name值,頁面上輸出的內容也會隨之進行改變!
我們知道,操作其實就類似MVC中的C層,C層也就是處理業務邏輯的一層,如此一來,像上面在控制器的操作方法中輸出內容明顯就不太合適了。
既然要輸出內容,我們看看Yii2的V層又是如何進行操作(此操作非彼操作,不要妄加揣摩)的呢?
Hello World!
???????
說明一點:frontednviews下面創建的文件夾應與控制器保持一致,如此一來才方便我們對很多文件進行管理。
接下來看看如何才能對視圖index.php進行操作?
public function actionIndex ($name) { // echo "Hello {$name}!"; return $this->render("index"); }
僅僅是在之前的操作index內寫了一行代碼,用于操作視圖文件。此時我們很有必要在視圖文件內動態輸出Hello xxx!這個時候只需要在render方法傳遞參數即可。
// controller public function actionIndex ($name) { // echo "Hello {$name}!"; return $this->render("index", [ "name" => $name, ]); } //view ???????Hello = $name ?>!
如此一來,我們既掌握了視圖,又實現了我們想要輸出的Hello xxx!
但是,這個時候,如果我們地址欄輸入的參數name值等于,我們想要的結果是Hello !實際上并非如此!如此一來,就難免會遭遇XSS攻擊!為了安全起見,頁面上輸出的信息我們很有必要安全地處理一下!
Hello = yiihelpersHtml::encode($name) ?>!
???????
實際上這里我們也僅僅是簡單的談了一下如何避免XSS跨站攻擊。
下一節我們將要直接開講簡單的博客管理系統,本篇我們主要涉及的基本概念 操作、視圖、路由等,希望你能掌握透徹,有任何問題下方均可留言交流!
[考慮目前國內網站大部分采集文章十分頻繁,更有甚者不注明原文出處,原作者更希望看客們查看原文,以防有任何問題不能更新所有文章,避免誤導!]
查看原文
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/21615.html
摘要:為了演示特性的基本使用,我將會帶領大家構建一個簡單的博客管理系統。目前為止,我們借助生成了一系列操作。有好提示實際開發中,后臺管理理應利用協助開發,可快速提高開發效果。 作者:白狼 出處:http://www.manks.top/document/easy_blog_manage_system.html 本文版權歸作者,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出...
摘要:官方文檔給出了兩種的安裝方式。一種是通過歸檔文件安裝,另一種則是通過進行安裝。為啥要通過歸檔文件的方式安裝呢,其實你我心里都是明白的,因為另一種安裝方式失敗了,別無選擇嘛。 作者:白狼 出處:http://www.manks.top/document/install.html 本文版權歸作者,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責...
摘要:之速率限制什么是速率限制權威指南翻譯過來為限流,為防止濫用,你應該考慮對您的限流。如果在規定的時間內接收了一個用戶大量的請求,將返回響應狀態代碼這意味著過多的請求。 Yii2.0 RESTful API 之速率限制 什么是速率限制? 權威指南翻譯過來為限流,為防止濫用,你應該考慮對您的 API 限流。 例如,您可以限制每個用戶 10 分鐘內最多調用 API 100 次。 如果在規定的時...
摘要:記住它,一點點來,萬物均可優化。下一篇將為你講解對一個萬數據的表程序優化實戰真實例子之二開刀數據表完本文原創發布于微信公眾號北哥小報嚴謹的原創技術文,還有一些其他研究。 showImg(https://segmentfault.com/img/bVPBSr?w=1200&h=500); 這是一篇真實案例,并不是理論課,阿北將同步我的整個優化之路,優化之路慢慢長,對大家拋磚引玉已達目的,...
閱讀 3444·2021-09-08 10:46
閱讀 1180·2019-08-30 13:17
閱讀 2358·2019-08-30 13:05
閱讀 1200·2019-08-29 15:29
閱讀 2882·2019-08-29 11:31
閱讀 533·2019-08-26 12:13
閱讀 1532·2019-08-26 11:42
閱讀 1818·2019-08-23 18:37