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