YII2: Bad Request (#400) Unable to verify your data submissionYII2:
Такая ошибка:
Bad Request (#400) Unable to verify your data submissionYII2
может возникнуть при принудительном вызове формы с POST или GET параметрами со страницы сайта. Например:
<form id="TheFormRoute" method="post" action="?r=site%2Fls_route_report" target="Маршруты доставки">
<input type="hidden" id="f_count_ls" name="f_count_ls" value="" />
<input type="hidden" id="f_route_id" name="f_route_id" value="" />
<input type="hidden" id="f_route_name" name="f_route_name" value="" />
<input type="hidden" id="f_period" name="f_period" value="" />
<input type="hidden" id="f_area" name="f_area" value="" />
<input type="hidden" id="f_area_name" name="f_area_name" value="" />
<input type="hidden" id="f_ls_list" name="f_ls_list" value="" />
</form>
В контроллере сайта код вида :
public function actionLs_route_report() {
Yii::$app->controller->enableCsrfValidation = false;
return $this->render('route_report');
}
Как раз и приведет к подобной ошибке:

Это своеобразная защита фреймворка от потенциального флуда. Вариантов решения несколько:
Отключить проверку CSRF глобально:
'components' => [
'request' => [
'enableCsrfValidation' => false,
],
Отключить проверку для конкретного контроллера:
class SiteController extends Controller
{
public function beforeAction($action){
$this->enableCsrfValidation = false;
return parent::beforeAction($action);
}
public function actionLs_route_report() {
return $this->render('route_report');
}
Или воспользоваться ПРАВИЛЬНЫМ по мнению фреймворка методом:
<form id="TheFormRoute" method="post" action="?r=site%2Fls_route_report" target="Маршруты доставки">
<input id="form-token" type="hidden" name="<?=Yii::$app->request->csrfParam?>" value="<?=Yii::$app->request->csrfToken?>"/>
<input type="hidden" id="f_count_ls" name="f_count_ls" value="" />
<input type="hidden" id="f_route_id" name="f_route_id" value="" />
<input type="hidden" id="f_route_name" name="f_route_name" value="" />
<input type="hidden" id="f_period" name="f_period" value="" />
<input type="hidden" id="f_area" name="f_area" value="" />
<input type="hidden" id="f_area_name" name="f_area_name" value="" />
<input type="hidden" id="f_ls_list" name="f_ls_list" value="" />
</form>
