我正在构建测试API。我创建了一个从yii \ rest \ Controller扩展的Controller Page。动作需要发送响应。
要访问此控制器中的操作,需要发布service_id值。如果存在,我需要评估该service_id是否存在,是否处于活动状态并且属于已登录的用户。如果验证失败,则需要发送响应。
我正在尝试使用beforeAction()进行操作,但是问题是返回数据用于验证是否应该继续执行操作。
因此,我的临时解决方案是将服务对象保存在Class属性中,以便在操作中对其进行评估并返回响应。
for i in range(100):
model.fit(X_train, y_train, epochs=1)
但是我可能有20个需要进行此验证的动作,有没有一种方法可以从beforeAction方法返回响应以避免重复代码?
答案 0 :(得分:3)
您可以在beforeAction()
中设置响应并返回false
以避免采取行动:
public function beforeAction($action) {
if (Yii::$app->request->isPost) {
$userAccess = new UserAccess();
$userAccess->load(Yii::$app->request->post());
$this->service = $userAccess->getService();
if (empty($this->service)) {
$this->asJson([
'code' => 'ERROR',
'message' => 'Service does not exist',
]);
return false;
}
}
return parent::beforeAction($action);
}
答案 1 :(得分:-1)
可以在$ this-> service = $ service之后粘贴到beforeAction中。
if (empty($this->service)) {
echo json_encode(['code' => 'ERROR', 'message' => 'Service does not exist']);
exit;
}