Yii2-在操作之前返回响应

时间:2018-06-24 16:57:02

标签: php yii2 yii-rest

我正在构建测试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方法返回响应以避免重复代码?

2 个答案:

答案 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;
}