yii2 глобальное поведение для проверки языка в модуле - PullRequest
0 голосов
/ 20 октября 2018

У меня есть модуль API в приложении Yii2.Перед любым запросом мне нужно проверить, отправил ли пользователь язык в сообщении или получил запрос.Если пользователь не отправил язык, выведите исключение с кодом 422.

У меня есть модуль Api.php.Я должен настроить только для этого модуля.

1 Ответ

0 голосов
/ 20 октября 2018

Создание поведения BeforeActionValidator, затем создание метода beforeAction внутри создания правила проверки с помощью HttpException.Вот пример:

class BeforeActionValidator extends Behavior
{

    public $rules = [];

    public function events()
    {
        return [
            Controller::EVENT_BEFORE_ACTION => 'beforeAction'
        ];
    }


    public function beforeAction()
    {
        $lang = Yii::$app->request->get('lang', null)??Yii::$app->request->post('lang', null);
        if ($lang == null) {
            throw new HttpException(422,"lang is required");
        }
    }
}

И затем присоедините это поведение к файлу конфигурации.В вашем модуле.

public function init()
    {
        parent::init();

        \Yii::configure($this,
            [
                'as globalAccess' => [
                    'class' => BeforeActionValidator::class,
                ]
            ]);
    }

Если вы хотите, вы можете добавить другие события.Нравится AFTER_REQUEST

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...