【发布时间】:2018-06-24 16:57:01
【问题描述】:
我正在构建一个测试 API。我创建了一个从 yii\rest\Controller 扩展的控制器页面。 Actions 需要发送响应。
要访问此控制器中的操作,需要发布 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 方法返回响应以避免重复代码?
【问题讨论】: