我在 Yii2 应用程序中有 api 模块。在任何请求之前,我需要检查用户是否在帖子中发送语言或获取请求。如果用户没有发送语言,则使用 422 代码抛出异常。
我有模块 Api.php。我应该只为这个模块配置。
创建行为 BeforeActionValidator,然后在使用 HttpException 创建验证规则中创建方法 beforeAction。这是示例:
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