Обязательные 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());
}
→ Ссылка