日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Yii的action

發布時間:2024/9/19 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Yii的action 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.內聯操作

內聯操作就是定義在Controller中的,以action前綴,并且完成需要功能的操作。
內聯操作通常是用來執行資源的特定操作,因此,操作ID通常為動詞,如view, update等。
內聯操作的名字是根據操作ID遵循如下規則衍生:

  • 將每個單詞的第一個字母轉為大寫;
  • 去掉中橫杠,-之后的字符改大寫,類似github;
  • 增加action前綴.
  • index 轉成 actionIndex, hello-world 轉成 actionHelloWorld。
  • 如果你計劃在不同地方重用相同的操作, 或者你想重新分配一個操作,需要考慮定義它為獨立操作。

    就是說路由中的控制器方法會自動的加上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的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。