首頁  >  文章  >  php框架  >  怎麼使用yii框架建立hello頁面

怎麼使用yii框架建立hello頁面

(*-*)浩
(*-*)浩原創
2019-11-26 14:44:062821瀏覽

怎麼使用yii框架建立hello頁面

本章描述如何在你的應用程式中建立一個新的 「Hello」 頁面。為了實現這一目標,將建立一個操作和一個視圖:

應用將會分派頁面請求給動作     ( 推薦學習:yii教學

動作將會依序渲染視圖呈現「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 = &#39;Hello&#39;)
    {
        return $this->render(&#39;say&#39;, [&#39;message&#39; => $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

怎麼使用yii框架建立hello頁面

這個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頁面的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn