Отдельные действия
Отдельные действия определяются в качестве классов, унаследованных от [[yii\base\Action]] или его потомков. Например, в Yii релизах, присутствуют [[yii\web\ViewAction]] и [[yii\web\ErrorAction]], оба из которых являются отдельными действиями.
Для использования отдельного действия, вы должны указать его в карте действий, с помощью переопределения метода [[yii\base\Controller::actions()]] в вашем классе контроллера, следующим образом:
public function actions()
{
return [
// объявляет "error" действие с помощью названия класса
'error' => 'yii\web\ErrorAction',
// объявляет "view" действие с помощью конфигурационного массива
'view' => [
'class' => 'yii\web\ViewAction',
'viewPrefix' => '',
],
];
}
Как вы можете видеть, метод actions()
должен вернуть массив, ключами которого являются ID действий, а значениями - соответствующие названия класса действия или конфигурация. В отличие от встроенных действий, ID отдельных действий могут содержать произвольные символы, до тех пор пока они определены в методе actions()
.
Для создания отдельного действия, вы должны наследоваться от класса [[yii\base\Action]] или его потомков, и реализовать метод run()
с областью видимости public. Роль метода run()
аналогична другим методам действий. Например,
<?php
namespace app\components;
use yii\base\Action;
class HelloWorldAction extends Action
{
public function run()
{
return "Hello World";
}
}