Laravel Redirect:: withInput()

как говорится в заголовке-я пытаюсь перенаправить назад на предыдущую страницу с входными данными, например:

return Redirect::back()->withInput();

он работает как предназначен для регулярного ввода, но не для файлов! Есть ли обходной путь для этого? Таким образом, после перенаправления предыдущий файл будет выбран снова.

5 ответов


Это не сработает.

когда вы перенаправляете что-то в Laravel, он хранит $_POST и $_GET в сеансе, чтобы вернуть вам данные в следующем запросе. Файлы поставляются в специальном PHP global var, $_FILES, потому что они на самом деле не в памяти, они находятся на диске и просто некоторая информация о них в памяти.

хранение этих файлов в сеансе может стоить слишком много ресурсов, представьте, что вы храните их в сеансе, который вы храните в базе данных... Да, Laravel или Symfony могут создать слой справиться с этим, на первый взгляд, легко, но, похоже, они просто решили этого не делать.

Итак, ИМО, если они вам нужны в следующем запросе, переместите их во временную область и Session::put() информацию о них, чтобы вы могли просто Session:: get() их в следующем запросе.


Как уже упоминалось здесь, нет прямого способа сделать это. Ценным решением может быть сохранение файла где-то при загрузке, а затем заполнение формы после перенаправления дополнительным полем ввода, содержащим информацию о ранее загруженном файле. Таким образом, вы сможете решить на стороне сервера, взять старый (в случае, если не был загружен новый файл) или новый.


Это может работать:

return Redirect::back()->with('file', Input::file('file_name');

Если вы делаете с формой как

Form::text("name",null);

это будет работать, попробуйте :)


Я бы пошел на подход java-script, просто проверьте входные данные в браузере с помощью java-script, если вход хорош, пусть они отправляют форму. просто предложение..!!