小編給大家分享一下使用yii框架創(chuàng)建hello頁面的方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

本章描述了如何在你的應(yīng)用中創(chuàng)建一個(gè)新的 “Hello” 頁面。為了實(shí)現(xiàn)這一目標(biāo), 將會(huì)創(chuàng)建一個(gè)操作 和一個(gè)視圖:
應(yīng)用將會(huì)分派頁面請求給動(dòng)作
動(dòng)作將會(huì)依次渲染視圖呈現(xiàn) “Hello” 給最終用戶
貫穿整個(gè)章節(jié),你將會(huì)掌握三件事:
如何創(chuàng)建一個(gè)動(dòng)作去響應(yīng)請求,
如何創(chuàng)建一個(gè)視圖去構(gòu)造響應(yīng)內(nèi)容,
以及一個(gè)應(yīng)用如何分派請求給動(dòng)作。
創(chuàng)建動(dòng)作
為了 “Hello”,需要?jiǎng)?chuàng)建一個(gè) say 操作, 從請求中接收 message 參數(shù)并顯示給最終用戶。 如果請求沒有提供 message 參數(shù),操作將顯示默認(rèn)參數(shù) “Hello”。
信息: 操作是最終用戶可以直接訪問并執(zhí)行的對象。 操作被組織在控制器中。 一個(gè)操作的執(zhí)行結(jié)果就是最終用戶收到的響應(yīng)內(nèi)容。
操作必須聲明在控制器中。為了簡單起見, 你可以直接在 SiteController 控制器里聲明 say 操作。 這個(gè)控制器是由文件 controllers/SiteController.php 定義的。以下是一個(gè)操作的聲明:
<?php
namespace app\controllers;
use yii\web\Controller;
class SiteController extends Controller
{
// ...現(xiàn)存的代碼...
public function actionSay($message = 'Hello')
{
return $this->render('say', ['message' => $message]);
}
}在上述 SiteController 代碼中,say 操作被定義為 actionSay 方法。 Yii 使用 action 前綴區(qū)分普通方法和操作。 action 前綴后面的名稱被映射為操作的 ID。
涉及到給操作命名時(shí),你應(yīng)該理解 Yii 如何處理操作 ID。 操作 ID 總是被以小寫處理,如果一個(gè)操作 ID 由多個(gè)單詞組成, 單詞之間將由連字符連接(如 create-comment)。
操作 ID 映射為方法名時(shí)移除了連字符,將每個(gè)單詞首字母大寫,并加上 action 前綴。 例子:操作 ID create-comment 相當(dāng)于方法名 actionCreateComment。
上述代碼中的操作方法接受一個(gè)參數(shù) $message, 它的默認(rèn)值是 “Hello”(就像你設(shè)置 PHP 中其它函數(shù)或方法的默認(rèn)值一樣)。 當(dāng)應(yīng)用接收到請求并確定由 say 操作來響應(yīng)請求時(shí),應(yīng)用將從請求的參數(shù)中尋找對應(yīng)值傳入進(jìn)來。
換句話說,如果請求包含一個(gè) message 參數(shù), 它的值是 “Goodbye”, 操作方法中的 $message 變量也將被填充為 “Goodbye”。
在操作方法中,render() 被用來渲染一個(gè) 名為 say 的視圖文件。 message 參數(shù)也被傳入視圖,這樣就可以在里面使用。操作方法會(huì)返回渲染結(jié)果。 結(jié)果會(huì)被應(yīng)用接收并顯示給最終用戶的瀏覽器(作為整頁 HTML 的一部分)。
創(chuàng)建視圖
視圖是你用來生成響應(yīng)內(nèi)容的腳本。為了說 “Hello”, 你需要?jiǎng)?chuàng)建一個(gè) say 視圖,以便顯示從操作方法中傳來的 message 參數(shù)。
<?php use yii\helpers\Html; ?> <?= Html::encode($message) ?>
say 視圖應(yīng)該存為 views/site/say.php 文件。當(dāng)一個(gè)操作中調(diào)用了 render() 方法時(shí), 它將會(huì)按 views/控制器 ID/視圖名.php 路徑加載 PHP 文件。
注意以上代碼,message 參數(shù)在輸出之前被 HTML-encoded 方法處理過。 這很有必要,當(dāng)參數(shù)來自于最終用戶時(shí),參數(shù)中可能隱含的惡意 JavaScript 代碼會(huì)導(dǎo)致 跨站腳本(XSS)攻擊。
當(dāng)然了,你大概會(huì)在 say 視圖里放入更多內(nèi)容。內(nèi)容可以由 HTML 標(biāo)簽,純文本, 甚至 PHP 語句組成。實(shí)際上 say 視圖就是一個(gè)由 render() 執(zhí)行的 PHP 腳本。 視圖腳本輸出的內(nèi)容將會(huì)作為響應(yīng)結(jié)果返回給應(yīng)用。應(yīng)用將依次輸出結(jié)果給最終用戶。
試運(yùn)行
創(chuàng)建完動(dòng)作和視圖后,你就可以通過下面的 URL 訪問新頁面了:
http://hostname/index.php?r=site/say&message=Hello+World

這個(gè) URL 將會(huì)輸出包含 “Hello World” 的頁面,頁面和應(yīng)用里的其它頁面使用同樣的頭部和尾部。
如果你省略 URL 中的 message 參數(shù),將會(huì)看到頁面只顯示 “Hello”。 這是因?yàn)?message 被作為一個(gè)參數(shù)傳給 actionSay() 方法,當(dāng)省略它時(shí),參數(shù)將使用默認(rèn)的 “Hello” 代替。
信息: 新頁面和其它頁面使用同樣的頭部和尾部是因?yàn)?nbsp;render() 方法會(huì)自動(dòng)把 say 視圖執(zhí)行的結(jié)果嵌入稱為布局的文件中, 本例中是 views/layouts/main.php。
上面 URL 中的參數(shù) r 需要更多解釋。 它代表路由,是整個(gè)應(yīng)用級的, 指向特定操作的獨(dú)立 ID。路由格式是 控制器 ID/操作 ID。應(yīng)用接受請求的時(shí)候會(huì)檢查參數(shù), 使用控制器 ID 去確定哪個(gè)控制器應(yīng)該被用來處理請求。 然后相應(yīng)控制器將使用操作 ID 去確定哪個(gè)操作方法將被用來做具體工作。
上述例子中,路由 site/say 將被解析至 SiteController 控制器和其中的 say 操作。 因此 SiteController::actionSay() 方法將被調(diào)用處理請求。
信息: 與操作一樣,一個(gè)應(yīng)用中控制器同樣有的 ID。 控制器 ID 和操作 ID 使用同樣的命名規(guī)則。 控制器的類名源自于控制器 ID, 移除了連字符,每個(gè)單詞首字母大寫,并加上 Controller 后綴。 例子:控制器 ID post-comment 相當(dāng)于控制器類名 PostCommentController
以上是“使用yii框架創(chuàng)建hello頁面的方法”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
網(wǎng)頁名稱:使用yii框架創(chuàng)建hello頁面的方法-創(chuàng)新互聯(lián)
文章路徑:http://chinadenli.net/article42/dphghc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、網(wǎng)站制作、網(wǎng)站內(nèi)鏈、網(wǎng)站設(shè)計(jì)、軟件開發(fā)、營銷型網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容