YII2 控制器簡述

2022-07-27 16:24:14 字數 1325 閱讀 1214

控制器繼承自yii\base\controller類的物件,負責處理請求和生成響應,接收資料併發送到模型,傳送模型結果到檢視。

1. 操作

控制器由若干操作組成,是執行終端使用者請求的最小單元。操作view,定義方法名為actionview()。

2. 路由

終端使用者通過路由尋找到操作,路由是有包含控制器id,操作id。

3. 建立控制器

控制器 id 應僅包含英文小寫字母、數字、下劃線、中橫槓和正斜槓

控制器 id 可包含子目錄字首,例如 admin/article 代表

控制器方法命名對大小寫敏感。只有公有的方法才能被內聯操作解析,

在不同地方重用相同的操作, 或者你想重新分配乙個操作,需要考慮定義它為獨立操作

獨立操作

獨立操作通過繼承[[yii\base\action]]或它的子類來定義,並實現公有的名稱為 run()的方法

要使用獨立操作,需要通過控制器中覆蓋yii\base\controller::actions()

public function actions()

操作引數

內聯操作的操作方法和獨立操作的 run() 方法可以帶引數,稱為操作引數。 引數值從請求中獲取

public function actionview($id, $version = null)

http://hostname/index.php?r=post/view&id=123: $id 會填入'123',$version 仍為 null 空

因為沒有 version 請求引數;

•http://hostname/index.php?r=post/view&id=123&version=2: $id 和 $version 分別填

入 '123' 和 '2'`

•http://hostname/index.php?r=post/view: 會丟擲[[yii\web\badrequesthttpexception]] 異

常 因為請求沒有提供引數給必須賦值引數$id

•http://hostname/index.php?r=post/view&id=123: 會丟擲

[[yii\web\badrequesthttpexception]] 異常 因為$id 引數收到數字值 ['123']而不是字串.

如果想讓操作引數接收陣列值,需要指定$id 為 array,如下所示:

public function actionview(array $id, $version = null)

預設操作

在控制器中覆蓋定義

public $defaultaction = 'home';

Yii2 獲取模組名 控制器名 方法名

yii2 獲取模組名 控制器名 方法名 在檢視中 模組名 this context module id 控制器名 this context id 方法名 this context action id在控制器中 或模組名 this module id 控制器名 this id 方法名 this act...

Yii2 獲取模組名 控制器名 方法名

yii2 獲取模組名 控制器名 方法名 在檢視中 模組名 this context module id 控制器名 this context id 方法名 this context action id 在控制器中 或模組名 this module id 控制器名 this id 方法名 this ac...

Yii2 獲取模組名 控制器名 方法名

yii2 獲取模組名 控制器名 方法名 在檢視中 模組名 this context module id 控制器名 this context id 方法名 this context action id 在控制器中 模組名 yii app co ntro ller mo dule id 控制器 名yii...