Я создаю тестовый API.Я создал страницу контроллера, которая простирается от yii \ rest \ 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, чтобы избежать повторения кода?