Блог Андрея

 
 

Когда handleRequest не работает

Сегодня впервые попытался загрузить файлы ajax запросом в проекте Symfony 5.0.2.

В проекте Symfony 3.4 работал такой подход: просто заворачиваешь переменную _token и переменную с данными файла в имя формы - и всё, этого хватило, данные отлично обрабатываются после вызова handleRequest($request);

Но в проекте Symfony 5.0.2 это не прошло, почему не удалось понять. Зато я разобрался с тем, как вручную вызвать $oForm->submit() так, чтобы всё заработало.

Итак, метод getName в проекте выглядит так:

public function getName(): string
	{
		return 'app.psd_up_form';// или return 'psd_up_form'; - Symfony без разницы. В 3.4 работал вариант с префиксом app.
	}

Соответственно я завернул все поля запроса, отправляющего файл в psd_up_form[]

В проекте Symfony 3,4 это проходило. Но в проекте Symfony 5.0.2 несмотря ни на что была ошибка «check if an unsubmitted form is valid». Решилось ручным вызовом FormInterface::submit()

Вместо


$oForm->handleRequest($oRequest);

Написал

  
$oForm->submit([
	'_token' => $oRequest->get('psd_up_form')['_token'],
	'psdfile' => $oRequest->files->get('psd_up_form')['psdfile']
]);

Решение конечно не отличное, но пока другого к сожалению нет.