亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

ディレクトリ 検索
閱讀前篇 簡介 Yii 是什么 從 Yii 1.1 升級(jí) 入門 安裝 Yii 運(yùn)行應(yīng)用 第一次問候 使用Forms 數(shù)據(jù)庫應(yīng)用 使用 Gii 生成代碼 進(jìn)階 應(yīng)用結(jié)構(gòu) 概述 入口腳本 應(yīng)用(Applications) 應(yīng)用組件(Application Components) 控制器(Controllers) 模型(Models) 視圖(views) 模塊(Modules) 過濾器(Filters) 小部件(Widgets) 前端資源(Assets) 擴(kuò)展(Extensions) 請(qǐng)求處理 運(yùn)行概述 啟動(dòng)引導(dǎo)(Bootstrapping) 路由和創(chuàng)建URL 請(qǐng)求(Requests) 響應(yīng)(Responses) Sessions 和 Cookies 錯(cuò)誤處理(Handling Errors) 日志(Logging) 關(guān)鍵概念 組件(Component) 屬性(Property) 事件(Events) 行為(Behaviors) 配置(Configurations) 別名(Aliases) 類自動(dòng)加載(Autoloading) 服務(wù)定位器(Service Locator) 依賴注入容器(Dependency Injection Container) 配合數(shù)據(jù)庫工作 數(shù)據(jù)庫訪問 (Data Access Objects) 查詢生成器(Query Builder) 活動(dòng)記錄(Active Record) 數(shù)據(jù)庫遷移(Migrations) Sphinx Redis MongoDB Elasticsearch 接收用戶數(shù)據(jù) 創(chuàng)建表單(Creating Forms) 輸入驗(yàn)證(Validating Input) 文件上傳(Uploading Files) 收集列表輸入(Collecting Tabular Input) 多模型的復(fù)合表單(Getting Data for Multiple Models) 顯示數(shù)據(jù) 格式化輸出數(shù)據(jù)(Data Formatting) 分頁(Pagination) 排序(Sorting) 數(shù)據(jù)提供器(Data Providers) 數(shù)據(jù)小部件(Data Widgets) 客戶端腳本使用(Working with Client Scripts) 主題(Theming) 安全 認(rèn)證(Authentication) 授權(quán)(Authorization) 處理密碼(Working with Passwords) 客戶端認(rèn)證(Auth Clients) 最佳安全實(shí)踐(Best Practices) 緩存 概述 數(shù)據(jù)緩存 片段緩存 頁面緩存 HTTP 緩存 RESTfull Web服務(wù) 快速入門(Quick Start) 資源(Resources) 控制器(Controllers) 路由(Routing) 格式化響應(yīng)(Response Formatting) 授權(quán)認(rèn)證(Authentication) 速率限制(Rate Limiting) 版本(Versioning) 錯(cuò)誤處理(Error Handling) 開發(fā)工具 調(diào)試工具欄和調(diào)試器 使用Gii生成代碼 生成API文檔 測試 概述(Overview) 配置測試環(huán)境(Testing environment setup) 單元測試(Unit Tests) 功能測試(Function Tests) 驗(yàn)收測試(Acceptance Tests) 測試夾具(Fixtures) 高級(jí)專題 高級(jí)應(yīng)用模板 創(chuàng)建自定義應(yīng)用程序結(jié)構(gòu) 控制臺(tái)命令 核心驗(yàn)證器(Core Validators) 國際化 收發(fā)郵件 性能優(yōu)化 共享主機(jī)環(huán)境 模板引擎 集成第三方代碼 小部件 Bootstrap 小部件 Jquery UI 助手類 概述 Array 助手(ArrayHelper) Html 助手(Html) Url 助手(Url)
テキスト

說聲 Hello

說聲 Hello

本章描述了如何在你的應(yīng)用中創(chuàng)建一個(gè)新的 “Hello” 頁面。為了實(shí)現(xiàn)這一目標(biāo),將會(huì)創(chuàng)建一個(gè)操作和一個(gè)視圖:

  • 應(yīng)用將會(huì)分派頁面請(qǐng)求給操作
  • 操作將會(huì)依次渲染視圖呈現(xiàn) “Hello” 給最終用戶

貫穿整個(gè)章節(jié),你將會(huì)掌握三件事:

  1. 如何創(chuàng)建一個(gè)操作去響應(yīng)請(qǐng)求,
  2. 如何創(chuàng)建一個(gè)視圖去構(gòu)造響應(yīng)內(nèi)容,
  3. 以及一個(gè)應(yīng)用如何分派請(qǐng)求給操作。

創(chuàng)建操作

為了 “Hello”,需要?jiǎng)?chuàng)建一個(gè)?say?操作,從請(qǐng)求中接收?message?參數(shù)并顯示給最終用戶。如果請(qǐng)求沒有提供?message?參數(shù),操作將顯示默認(rèn)參數(shù) “Hello”。

補(bǔ)充:操作是最終用戶可以直接訪問并執(zhí)行的對(duì)象。操作被組織在控制器中。一個(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{
    // ...其它代碼...

    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)用接收到請(qǐng)求并確定由?say?操作來響應(yīng)請(qǐng)求時(shí),應(yīng)用將從請(qǐng)求的參數(shù)中尋找對(duì)應(yīng)值傳入進(jìn)來。換句話說,如果請(qǐng)求包含一個(gè)?message?參數(shù),它的值是?“Goodybye”, 操作方法中的?$message?變量也將被填充為?“Goodbye”。

在操作方法中,yii\web\Controller::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ù)。

<?phpuse yii\helpers\Html;
?><?= Html::encode($message) ?>

say?視圖應(yīng)該存為?views/site/say.php?文件。當(dāng)一個(gè)操作中調(diào)用了 yii\web\Controller::render() 方法時(shí),它將會(huì)按?views/控制器 ID/視圖名.php?路徑加載 PHP 文件。

注意以上代碼,message?參數(shù)在輸出之前被 yii\helpers\Html::encode() 方法處理過。這很有必要,當(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è)由 yii\web\Controller::render() 執(zhí)行的 PHP 腳本。視圖腳本輸出的內(nèi)容將會(huì)作為響應(yīng)結(jié)果返回給應(yīng)用。應(yīng)用將依次輸出結(jié)果給最終用戶。

試運(yùn)行

創(chuàng)建完操作和視圖后,你就可以通過下面的 URL 訪問新頁面了:

http://hostname/index.php?r=site/say&message=Hello+World

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”?代替。

補(bǔ)充:新頁面和其它頁面使用同樣的頭部和尾部是因?yàn)?yii\web\Controller::render() 方法會(huì)自動(dòng)把?say?視圖執(zhí)行的結(jié)果嵌入稱為布局的文件中,本例中是?views/layouts/main.php

上面 URL 中的參數(shù)?r?需要更多解釋。它代表路由,是整個(gè)應(yīng)用級(jí)的,指向特定操作的獨(dú)立 ID。路由格式是?控制器 ID/操作 ID。應(yīng)用接受請(qǐng)求的時(shí)候會(huì)檢查參數(shù),使用控制器 ID 去確定哪個(gè)控制器應(yīng)該被用來處理請(qǐng)求。然后相應(yīng)控制器將使用操作 ID 去確定哪個(gè)操作方法將被用來做具體工作。上述例子中,路由?site/say?將被解析至?SiteController?控制器和其中的?say?操作。因此SiteController::actionSay()?方法將被調(diào)用處理請(qǐng)求。

補(bǔ)充:與操作一樣,一個(gè)應(yīng)用中控制器同樣有唯一的 ID。控制器 ID 和操作 ID 使用同樣的命名規(guī)則。控制器的類名源自于控制器 ID,移除了連字符,每個(gè)單詞首字母大寫,并加上?Controller?后綴。例子:控制器 ID?post-comment?相當(dāng)于控制器類名PostCommentController。

總結(jié)

通過本章節(jié)你接觸了 MVC 設(shè)計(jì)模式中的控制器和視圖部分。創(chuàng)建了一個(gè)操作作為控制器的一部分去處理特定請(qǐng)求。然后又創(chuàng)建了一個(gè)視圖去構(gòu)造響應(yīng)內(nèi)容。在這個(gè)小例子中,沒有模型調(diào)用,唯一涉及到數(shù)據(jù)的地方是?message?參數(shù)。

你同樣學(xué)習(xí)了 Yii 路由的相關(guān)內(nèi)容,它是用戶請(qǐng)求與控制器操作之間的橋梁。

下一章,你將學(xué)習(xí)如何創(chuàng)建一個(gè)模型,以及添加一個(gè)包含 HTML 表單的頁面。
前の記事: 次の記事: