gpt4 book ai didi

php - Yii2 - beforeAction 期间的返回响应

转载 作者:行者123 更新时间:2023-12-04 00:04:28 24 4
gpt4 key购买 nike

我正在构建一个测试 API。我创建了一个从 yii\rest\Controller 扩展的 Controller 页面。 Actions 需要发送响应。

要访问此 Controller 中的操作,需要发布 service_id 值。如果存在,我需要评估该 service_id 是否存在,它是否处于事件状态并且属于登录用户。如果验证失败,我需要发送响应。

我正在尝试使用 beforeAction() 来执行此操作,但问题是返回数据用于验证操作是否应该继续。

所以我的临时解决方案是将服务对象保存在 Class 属性中,以便在操作中评估它并返回响应。

class PageController extends Controller
{

public $service;

public function beforeAction($action)
{
parent::beforeAction($action);

if (Yii::$app->request->isPost) {

$data = Yii::$app->request->post();
$userAccess = new UserAccess();
$userAccess->load($data);

$service = $userAccess->getService();
$this->service = $service;
}

return true;
}

public function actionConnect()
{

$response = null;

if (empty($this->service)) {
$response['code'] = 'ERROR';
$response['message'] = 'Service does not exist';

return $response;
}
}
}

但我可能有 20 个需要此验证的操作,有没有办法从 beforeAction 方法返回响应以避免重复代码?

最佳答案

您可以在 beforeAction() 中设置响应并返回 false 以避免 Action 调用:

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);
}

关于php - Yii2 - beforeAction 期间的返回响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51012072/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com