您好,登錄后才能下訂單哦!
小編給大家分享一下使用yii框架創建hello頁面的方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
本章描述了如何在你的應用中創建一個新的 “Hello” 頁面。為了實現這一目標, 將會創建一個操作 和一個視圖:
應用將會分派頁面請求給動作
動作將會依次渲染視圖呈現 “Hello” 給最終用戶
貫穿整個章節,你將會掌握三件事:
如何創建一個動作去響應請求,
如何創建一個視圖去構造響應內容,
以及一個應用如何分派請求給動作。
創建動作
為了 “Hello”,需要創建一個 say 操作, 從請求中接收 message 參數并顯示給最終用戶。 如果請求沒有提供 message 參數,操作將顯示默認參數 “Hello”。
信息: 操作是最終用戶可以直接訪問并執行的對象。 操作被組織在控制器中。 一個操作的執行結果就是最終用戶收到的響應內容。
操作必須聲明在控制器中。為了簡單起見, 你可以直接在 SiteController 控制器里聲明 say 操作。 這個控制器是由文件 controllers/SiteController.php 定義的。以下是一個操作的聲明:
<?php namespace app\controllers; use yii\web\Controller; class SiteController extends Controller { // ...現存的代碼... public function actionSay($message = 'Hello') { return $this->render('say', ['message' => $message]); } }
在上述 SiteController 代碼中,say 操作被定義為 actionSay 方法。 Yii 使用 action 前綴區分普通方法和操作。 action 前綴后面的名稱被映射為操作的 ID。
涉及到給操作命名時,你應該理解 Yii 如何處理操作 ID。 操作 ID 總是被以小寫處理,如果一個操作 ID 由多個單詞組成, 單詞之間將由連字符連接(如 create-comment)。
操作 ID 映射為方法名時移除了連字符,將每個單詞首字母大寫,并加上 action 前綴。 例子:操作 ID create-comment 相當于方法名 actionCreateComment。
上述代碼中的操作方法接受一個參數 $message, 它的默認值是 “Hello”(就像你設置 PHP 中其它函數或方法的默認值一樣)。 當應用接收到請求并確定由 say 操作來響應請求時,應用將從請求的參數中尋找對應值傳入進來。
換句話說,如果請求包含一個 message 參數, 它的值是 “Goodbye”, 操作方法中的 $message 變量也將被填充為 “Goodbye”。
在操作方法中,render() 被用來渲染一個 名為 say 的視圖文件。 message 參數也被傳入視圖,這樣就可以在里面使用。操作方法會返回渲染結果。 結果會被應用接收并顯示給最終用戶的瀏覽器(作為整頁 HTML 的一部分)。
創建視圖
視圖是你用來生成響應內容的腳本。為了說 “Hello”, 你需要創建一個 say 視圖,以便顯示從操作方法中傳來的 message 參數。
<?php use yii\helpers\Html; ?> <?= Html::encode($message) ?>
say 視圖應該存為 views/site/say.php 文件。當一個操作中調用了 render() 方法時, 它將會按 views/控制器 ID/視圖名.php 路徑加載 PHP 文件。
注意以上代碼,message 參數在輸出之前被 HTML-encoded 方法處理過。 這很有必要,當參數來自于最終用戶時,參數中可能隱含的惡意 JavaScript 代碼會導致 跨站腳本(XSS)攻擊。
當然了,你大概會在 say 視圖里放入更多內容。內容可以由 HTML 標簽,純文本, 甚至 PHP 語句組成。實際上 say 視圖就是一個由 render() 執行的 PHP 腳本。 視圖腳本輸出的內容將會作為響應結果返回給應用。應用將依次輸出結果給最終用戶。
試運行
創建完動作和視圖后,你就可以通過下面的 URL 訪問新頁面了:
http://hostname/index.php?r=site/say&message=Hello+World
這個 URL 將會輸出包含 “Hello World” 的頁面,頁面和應用里的其它頁面使用同樣的頭部和尾部。
如果你省略 URL 中的 message 參數,將會看到頁面只顯示 “Hello”。 這是因為 message 被作為一個參數傳給 actionSay() 方法,當省略它時,參數將使用默認的 “Hello” 代替。
信息: 新頁面和其它頁面使用同樣的頭部和尾部是因為 render() 方法會自動把 say 視圖執行的結果嵌入稱為布局的文件中, 本例中是 views/layouts/main.php。
上面 URL 中的參數 r 需要更多解釋。 它代表路由,是整個應用級的, 指向特定操作的獨立 ID。路由格式是 控制器 ID/操作 ID。應用接受請求的時候會檢查參數, 使用控制器 ID 去確定哪個控制器應該被用來處理請求。 然后相應控制器將使用操作 ID 去確定哪個操作方法將被用來做具體工作。
上述例子中,路由 site/say 將被解析至 SiteController 控制器和其中的 say 操作。 因此 SiteController::actionSay() 方法將被調用處理請求。
信息: 與操作一樣,一個應用中控制器同樣有唯一的 ID。 控制器 ID 和操作 ID 使用同樣的命名規則。 控制器的類名源自于控制器 ID, 移除了連字符,每個單詞首字母大寫,并加上 Controller 后綴。 例子:控制器 ID post-comment 相當于控制器類名 PostCommentController
以上是“使用yii框架創建hello頁面的方法”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。