<?php namespace app\controllers; use yii\web\Controller; class ExampleController extends Controller { public function actionIndex() { $message = "index action of the ExampleController"; return $this->render("example",[ 'message' => $message ]); } public function actionHelloWorld() { return "Hello world!"; } } ?>
動作ID通常是動詞,如 create, update, delete 等。這是因為動作通常被設計來執行在一個特定資源發生變化時。
動作ID應該只包含這些字元 ? 小寫字母,數位,連字元和下劃線英文字母。
範例?
第1步- 在專案根內建立 components 檔案夾。在檔案夾內建立一個名為 GreetingAction.php 的檔案,並使用下面的程式碼。
<?php namespace app\components; use yii\base\Action; class GreetingAction extends Action { public function run() { return "Greeting,This from GreetingAction."; } } ?>
我們剛剛建立一個可重複使用的動作。在 ExampleController 中使用它,我們應該通過重寫 actions() 方法通過對映動作來宣告動作。
<?php namespace app\controllers; use yii\web\Controller; class ExampleController extends Controller { public function actions() { return [ 'greeting' => 'app\components\GreetingAction', ]; } public function actionIndex() { $message = "index action of the ExampleController"; return $this->render("example",[ 'message' => $message ]); } public function actionHelloWorld() { return "Hello world!"; } } ?>
public function actionOpenGoogle() { // redirect the user browser to https://www.tw511.com return $this->redirect('https://www.tw511.com'); }
現在,如果開啟URL => http://localhost:8080/index.php?r=example/open-google, 將被重定向到 https://www.tw511.com。
public function actionTestParams($first, $second) { return "$first & $second"; }
每個控制器都有一個預設動作。當路由僅包含控制器ID,就意味著將自動請求預設動作。預設情況下,系統預設的操作是:index。可以很容易在控制覆蓋掉這個屬性。
<?php namespace app\controllers; use yii\web\Controller; class ExampleController extends Controller { public $defaultAction = "hello-world"; /* other actions */ } ?>
yii\base\Controller:init() 被呼叫
控制器順序地呼叫Web應用程式,模組和控制器的 beforeAction()方法