日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

yii2实战教程之第一个Yii程序

發(fā)布時間:2025/3/19 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 yii2实战教程之第一个Yii程序 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

作者:白狼 出處:http://www.manks.top/document/yii_first_application.html 本文版權(quán)歸作者,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。

之前考慮過要不要砍掉該章節(jié),直接上手教你搭建簡單的博客系統(tǒng)。出于實戰(zhàn)基礎(chǔ)加之自C語言的書籍出版以來,幾乎所有的編程書籍都講述了一個Hello World的例子作為開始。雖然我們僅僅是學(xué)習(xí)Yii2,但是好歹我們這也是高大上的Yii嘛,我們也尊重傳統(tǒng),來一段Hello World快速入門!
我將學(xué)會什么

  • 了解到MVC設(shè)計模式中的V和C是什么

  • 如何創(chuàng)建一個操作(action)

  • 如何創(chuàng)建對應(yīng)的視圖文件(模板)

  • 簡單了解到操作的命名規(guī)范

  • 什么是路由

開始之前的準(zhǔn)備
Yii是什么?為什么要學(xué)Yii呢?是啥,就是一個框架,如果要加一些形容詞,我覺得高性能、易擴展等詞最適合不過了。

MVC相信就不用多說了,Yii2無疑更好的基于MVC對代碼進行了一定的組織。簡潔優(yōu)雅不說......我們還是不拍yii馬屁了,說重點。

我們知道,客戶端像服務(wù)端發(fā)起一個請求,服務(wù)端是必須要有對應(yīng)的響應(yīng)地址才是可以的。這個響應(yīng)的地址在Yii2中又是怎么進行描述的呢?先來介紹下什么是操作。

操作,其實就是一個action(action是動作的意思),也可以描述為我們前面說的響應(yīng)地址。TA是控制器(controller)的組成部分,再說白了其實就是類(class)的操作方法(function)。

如何創(chuàng)建一個操作呢?給類創(chuàng)建一個方法你會不,非要說的那么白才明白不是太好,對吧。

也就是說我們需要先有一個類(控制器)唄,沒錯!如下示例就是包含了兩個操作 index 和create的控制器test。

namespace frontend\controllers; use yii\web\Controller; class TestController extends Controller { public function actionIndex () { } public function actionCreate () { } }

有同學(xué)要較真了,控制器不是test嗎,為啥你的是TestController?還有啊,說好的操作名是index和create為啥你的都有前綴action?controller跟action去掉可不可以?答:不可以,必須帶上!Yii2規(guī)定:聲明的控制器必須帶上Controller后綴,同時操作必須帶上前綴action!

通常情況下,控制器用來處理請求有關(guān)的資源類型,其實就是做一些操作的,比如我們要處理文章之類的數(shù)據(jù),控制器應(yīng)命名為Article恰當(dāng)些,盡量做到見名知意。Action當(dāng)然也是如此,比如我們要創(chuàng)建一篇文章,action理應(yīng)為add或者create為妙。

那有同學(xué)要說了,我就想叫操作名為createArticle怎么辦?天兒熱,先涼拌著,慢慢說。

yii2中操作名(action)遵循駝峰式命名,也就是說如果你是多個單詞,請保證你的命名規(guī)則是actionCreateArticle而不是actionCreatearticle!當(dāng)然,這只是一種規(guī)范,你不這樣做也沒人攔你。需要提醒注意的是多個單詞駝峰式命名,訪問操作的時候,多個單詞需要像create-article這樣用連接符連接而不是createArticle哦

接下來我們訪問已經(jīng)創(chuàng)建好的操作:

首先我們先配置下域名advanced.dev指向frontendweb目錄,我們后文所指的該域名均指向這里

地址欄輸入 http://advanced.dev/index.php?r=test/index 訪問看看結(jié)果,我們會發(fā)現(xiàn)一片空白,什么也沒有!很明顯,我們的的操作方法index里空空如也,沒做任何輸出。要不我們做點什么?別急,我們先來看看這個地址,TA究竟做了什么,為什么能請求到我們指定的操作。

這就需要我們引入一個新的概念-路由。感覺挺好哈,這名字都沒聽過。不過不要緊,我換個說法你就明白了,訪問地址,路由就是我們的訪問地址!明白了吧,TA就是用于定位控制器操作的地址!我們這里重點是講明白概念,不做深究,具體細節(jié)需要的可以去查看官方文檔。

輸出Hello World!
該明白的該說的都說了,饒了一大圈終于該說本篇文章的重點了-輸出Hello World。艾瑪,可把我憋壞了。

public function actionIndex () { echo "Hello World!"; }

現(xiàn)在在回過來看看,是不是很簡單!

我們改變點什么,看看如何動態(tài)的輸出Hello Ketty,Hello Anmy?

public function actionIndex ($name) { echo "Hello {$name}!"; }

該操作方法接收一個參數(shù)name,理應(yīng)程序上會輸出Hello, xxx的字樣。

現(xiàn)在我們依然訪問 http://advanced.dev/index.php?r=test/index 會發(fā)現(xiàn)頁面報錯了,提示錯誤缺少參數(shù):name!也就是說,我們訪問該操作時應(yīng)該傳進來一個參數(shù)name!我們把地址修改為 http://advanced.dev/index.php?r=test/index&name=Kitty ,這個時候頁面正常輸出了Hello Kitty!手動修改地址欄的name值,頁面上輸出的內(nèi)容也會隨之進行改變!

我們知道,操作其實就類似MVC中的C層,C層也就是處理業(yè)務(wù)邏輯的一層,如此一來,像上面在控制器的操作方法中輸出內(nèi)容明顯就不太合適了。

既然要輸出內(nèi)容,我們看看Yii2的V層又是如何進行操作(此操作非彼操作,不要妄加揣摩)的呢?

<div class="test-index"> <h1>Hello World!</h1> ???????</div>

說明一點:frontednviews下面創(chuàng)建的文件夾應(yīng)與控制器保持一致,如此一來才方便我們對很多文件進行管理。

接下來看看如何才能對視圖index.php進行操作?

public function actionIndex ($name) { // echo "Hello {$name}!"; return $this->render('index'); }

僅僅是在之前的操作index內(nèi)寫了一行代碼,用于操作視圖文件。此時我們很有必要在視圖文件內(nèi)動態(tài)輸出Hello xxx!這個時候只需要在render方法傳遞參數(shù)即可。

// controller public function actionIndex ($name) { // echo "Hello {$name}!"; return $this->render('index', [ 'name' => $name, ]); } //view ???????<div class="test-index"> <h1>Hello <?= $name ?>!</h1> </div>

如此一來,我們既掌握了視圖,又實現(xiàn)了我們想要輸出的Hello xxx!

但是,這個時候,如果我們地址欄輸入的參數(shù)name值等于,我們想要的結(jié)果是Hello !實際上并非如此!如此一來,就難免會遭遇XSS攻擊!為了安全起見,頁面上輸出的信息我們很有必要安全地處理一下!

<div class="test-index"> <h1>Hello <?= yii\helpers\Html::encode($name) ?>!</h1> ???????</div>

實際上這里我們也僅僅是簡單的談了一下如何避免XSS跨站攻擊。

下一節(jié)我們將要直接開講簡單的博客管理系統(tǒng),本篇我們主要涉及的基本概念 操作、視圖、路由等,希望你能掌握透徹,有任何問題下方均可留言交流!

[考慮目前國內(nèi)網(wǎng)站大部分采集文章十分頻繁,更有甚者不注明原文出處,原作者更希望看客們查看原文,以防有任何問題不能更新所有文章,避免誤導(dǎo)!]

查看原文

總結(jié)

以上是生活随笔為你收集整理的yii2实战教程之第一个Yii程序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。