battrack
@battrack

В Laravel как вернуть в форму уже заполненные данные при неправильном вводе?

Сразу уточню, что вопрос касается работы без использования хелпера form, т.е. все формы делаю вручную.
Вопрос касается именно обновления уже существующей в базе записи, а не добавления.
Во всех руководствах предлагают такую систему роутов для данной операции:

Route::get('article/{article}/edit', ['as' => 'article.edit', 'uses' => 'ArticleController@edit']);
Route::patch('article/{article}', ['as' => 'article.update', 'uses' => 'ArticleController@update']);

Если я все правильно понимаю, то метод edit выводит форму и заполняет ее данными полей редактируемой записи из базы данных. При нажатии на "сохранить" вызываем метод update, который сохраняет в базу новые введенные данные и редиректит либо к списку записей либо обратно на страницу edit.
Но как быть в ситуации, если введены некорректные данные (например, не прошли валидацию), в этом случае снова нужно вывести форму при чем таким образом, чтобы она была заполнена "последними" данными, которые ввел пользователь.

В случае с create все просто - мы используем {{ old('...) }} для вывода последних данных.
Но как быть при update? Получается что метод update должен сохранять данные в случае успешного ввода либо же снова выводить форму с введенными данными {{ old('...) }}?
Но в этом случае получается, что фактически нам нужны три шаблона формы - для create, для edit и для update. Многовато получается.
  • Вопрос задан
  • 2923 просмотра
Решения вопроса 1
DJZT
@DJZT
Laravel - code for you
Если валидация не прошла, то метод update должен сделать редирект обратно на роут edit вот так
return redirect()->route('article.edit')->withInputs()->withErrors();


и ты сможешь так же использовать old()

А лучше используй объект request
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы