У меня есть модуль api в приложении Yii2. Перед любым запросом мне нужно проверить, отправил ли пользователь язык в сообщении или получил запрос. Если пользователь не отправил язык, выбросить исключение с кодом 422.
У меня есть модуль Api.php. Мне надо настроить только для этого модуля.
У меня есть модуль api. В каждом запросе пользователь должен указывать параметр «язык» в запросе GET или POST. Если нет, я должен выбросить исключение
какой у вас контроллер? ОТДЫХ или ВЕБ?
У вас есть контроллеры REST? В модуле api
да, я использую контроллер отдыха
Создайте поведение 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
Метод Init () - это где?
в желаемом модуле
Привет, можешь дать больше информации?