Я следил за статьей Фабьена Потенсье (Fabien Potencier) о создании собственного фреймворка из Symfony Components.
$request = \Symfony\Component\HttpFoundation\Request::createFromGlobals();
Я думал, что объект Request может быть использован в качестве замены суперглобальных элементов PHP. Однако, если я загружаю файл, и он сталкивается с ошибками (т. Е. Загрузка пустого файла), он не содержит никакой информации об ошибке?
Вот вывод массива $ _FILES, он содержит код ошибки
Array
(
[inputIndex] => Array
(
[name] => Array
(
[3] =>
)
[type] => Array
(
[3] =>
)
[tmp_name] => Array
(
[3] =>
)
[error] => Array
(
[3] => 4
)
[size] => Array
(
[3] => 0
)
)
)
Вот вывод объекта $ request
Array
(
[inputIndex] => Array
(
[3] =>
)
)
В случае $ _FILES объект запроса теряет много информации. Содержится ли он где-нибудь еще в объекте запроса? Как Symfony справляется с этим?
Цель объекта запроса — хранить данные запроса, а не проверять их. Если вы хотите выполнить проверку, создайте объект (Entity, если вы сохраняете данные запроса где-либо, или просто простой объект php, если нет), установите содержимое $_FILES
к объекту, как:
$model->setFile($request->files->get('fileFormInputName'));
и использовать компонент проверки проверить файл с помощью Ограничение файла.
Если вложение отправлено, $request->files->get('fileFormInputName')
будет instanceof Symfony\Component\HttpFoundation\File\UploadedFile
,
Я надеюсь, что это отвечает на ваш вопрос.
Других решений пока нет …