Yii2 在控制器內對映 Action 到其它動作

Wi1dcard發表於2019-06-20

本文講解:如何把控制器內的任意一個 Action 對映到另一個 Action。

0x00 準備

  • Yii ^ 2.0.7

0x01 程式碼

首先定義一個 RedirectAction 類。

class RedirectAction
{
    protected $actionId;

    public function __construct($actionId)
    {
        $this->actionId = $actionId;
    }

    public function __invoke($id, \yii\base\Controller $controller)
    {
        return $controller->createAction($this->actionId);
    }
}

接著在控制器內重寫實現 actions() 方法,用於對映 Action ID => 實際的動作

class Controller
{
    public function actions()
    {
        return [
            'foo' => new RedirectAction('bar'), // 訪問 `module/controller/foo` 將會被重定向至 `actionBar` 方法
            // ...
        ];
    }

    public function actionBar()
    {
        return 'bar';
    }
}

完成。

0xFF 感想

回頭再看 Laravel,真心感激 Laravel 的自定義路由...

我感謝自己平凡,敢愛敢恨沒負擔。
我感謝自己不凡,可愛可恨都包攬。

相關文章