Объект запроса Symfony — ФАЙЛЫ — константы ошибок загрузки

Я следил за статьей Фабьена Потенсье о создании собственного фреймворка из компонентов Symfony.

$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 справляется с этим?


person Andrew Berridge    schedule 22.03.2016    source источник


Ответы (1)


Объект Request предназначен для хранения данных запроса, а не для их проверки. Если вы хотите выполнить проверку, создайте объект (сущность, если вы где-то сохраняете данные запроса, или просто простой php-объект, если нет), установите содержимое $_FILES в объект, например:

$model->setFile($request->files->get('fileFormInputName'));

и используйте компонент проверки для проверки файла с помощью Ограничение файла. Если отправлено вложение, $request->files->get('fileFormInputName') будет instanceof Symfony\Component\HttpFoundation\File\UploadedFile.

Надеюсь, это ответит на ваш вопрос.

person hombee    schedule 22.03.2016