Обязательные POST параметры Yii2
Для задания обязательных GET параметров, я в параметрах action прописываю:
public function actionTest(int $required_param, int $required_param_2){
Теперь при попытке запроса страницы test без указания required_param и required_param_2, Yii выдаст ошибку: "Отсутствуют обязательные параметры".
Вопрос - как сделать обязательные POST параметры?
Например, в verbs разрешил только метод POST:
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'test' => ['POST'],
],
],
Теперь запросил эту страницу методом POST, передав параметры required_param, required_param_2 уже в теле запроса (т.е. раньше было $_GET['required_param'], сейчас стало $_POST['required_param']).
Но Yii по-прежнему ожидает эти параметры как GET, и выдает ошибку:
"Отсутствуют обязательные параметры".
Как решить мою проблему и указать обязательные POST параметры?
Ответы (1 шт):
Нативного способа передать post параметры в экшн у Yii2 нет. Туда передаются только GET параметры. Обойти можно переопределив метод у контроллера:
public function runAction($id,
$params=array()){
$params = array_merge($_POST, $params);
parent::runAction($id, $params);
}
Ещё может помочь такой метод:
public function bindActionParams($action, $params) {
return array_merge($params, Yii::$app->getRequest()->getBodyParams());
}