Symfony HttpFoundation получить один файл возвращает ноль? - PullRequest
0 голосов
/ 23 октября 2018

Я использую Symfony HttpFoundation для загрузки файлов, FileBag работает, если я звоню all(), но если я использую get('document_name'), он возвращает null.

use Symfony\Component\HttpFoundation\Request;


    public function saveFileAction(Request $request) {
        dump($request->files->all());
        dump($request->files->get('document'));
    }

Дляall () Я получаю следующий ответ:

FileController.php on line 175:
array:1 [▼
  "form" => array:1 [▼
    "document" => UploadedFile {#14 ▶}
  ]
]

Что я здесь не так делаю?Кто-нибудь знает, почему я не могу получить один файл методом get()?Я нашел в документации Symfony, что $request->files->get('document') должно работать ...

1 Ответ

0 голосов
/ 24 октября 2018

$request->files->get("document") правильно, если поле POST действительно названо так.(Проверьте с инспектором сети вашего браузера, чтобы быть уверенным.) Я подозреваю, что поле названо по-другому, или это будет работать.

Если оно приходит из файла, введенного в управляемый класс формы, вывместо этого следует использовать $form->get("document")->getData(); для получения экземпляра UploadedFile.Судя по названию form[document], которое вы упомянули в комментарии, и выводу $request->files->all(), вполне вероятно, что это так.

Если вам действительно нужно прочитать его в необработанном виде из атрибутов запроса, которые вынужно использовать $request->files->get("form[document]");, так как Symfony не расширил бы входное имя в форме массива при чтении его необработанным из атрибутов запроса.Это то же самое, если вы вводите текстовое поле, вам нужно будет прочитать его с $request->request->get("form[firstName]");, но, как я уже говорил, вы должны правильно использовать класс управляемой формы $form->get("document")->getData();, если это действительно управляемая форма.(Symfony уже подумал об этом заранее, включая каскадный ввод ответа на правила валидации и модели данных.)

В противном случае мне было бы интересно узнать, как вы загружаете эту форму.,(Это AJAX?)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...