Yii的action
生活随笔
收集整理的這篇文章主要介紹了
Yii的action
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.內聯操作
內聯操作就是定義在Controller中的,以action前綴,并且完成需要功能的操作。
內聯操作通常是用來執行資源的特定操作,因此,操作ID通常為動詞,如view, update等。
內聯操作的名字是根據操作ID遵循如下規則衍生:
如果你計劃在不同地方重用相同的操作, 或者你想重新分配一個操作,需要考慮定義它為獨立操作。
就是說路由中的控制器方法會自動的加上action變為actionIndex? 對外的一般都是內聯操作
2.獨立操作
是一個完成獨立功能的操作,一般是公共的重用的功能。
例如Yii發布的yii\web\ViewAction和yii\web\ErrorAction都是獨立操作,會被別的控制器進行調用;
要使用獨立操作,需要通過控制器中覆蓋yii\base\Controller::actions()方法在action map中申明,如下例所示:
public function actions() {return [// 用類來申明"error" 操作'error' => 'yii\web\ErrorAction',// 用配置數組申明 "view" 操作'view' => ['class' => 'yii\web\ViewAction','viewPrefix' => '',],]; }如上所示, actions() 方法返回鍵為操作ID,值為對應操作類名或數組configurations 的數組。 和內聯操作不同,獨立操作ID可包含任意字符,只要在actions() 方法中申明。 為創建一個獨立操作類,需要繼承yii\base\Action 或它的子類,并實現公有的名稱為run()的方法, run() 方法的角色和操作方法類似,例如:<?php namespace app\components;use yii\base\Action;class HelloWorldAction extends Action {public function run(){return "Hello World";} }3.操作參數
內聯操作的操作方法和獨立操作的 run() 方法可以帶參數,稱為操作參數。 參數值從請求中獲取, 對于yii\web\Application網頁應用, 每個操作參數的值從$_GET中獲得,參數名作為鍵; 對于yii\console\Application控制臺應用, 操作參數對應命令行參數。如下例,操作view (內聯操作) 申明了兩個參數 $id 和 $version。namespace app\controllers;use yii\web\Controller;class PostController extends Controller {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) {// ... } 現在如果請求為 http://hostname/index.php?r=post/view&id[]=123, 參數 $id 會使用數組值['123'], 如果請求為 http://hostname/index.php?r=post/view&id=123, 參數 $id 會獲取相同數組值,因為無類型 的'123'會自動轉成數組。4.控制器生命周期
1執行控制器,按順序調用應用主體、模塊、控制器的 beforeAction() 2再判斷有沒有指定訪問操作ID,如果沒有,則訪問yii\base\Controller::defaultAction默認操作ID。 3如果訪問指定了訪問的操作ID,那首先去執行獨立操作actions里定義的對應的操作ID 4最后按順序調用控制器、模塊、應用主體的 afterAction() 方法;每個 afterAction() 方法會觸發一個afterAction 事件,在事件中你可以追加事件處理操作。 5返回操作結果給應用主體。?
總結
以上是生活随笔為你收集整理的Yii的action的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Yii的错误类
- 下一篇: JQUERY获取DOM