#php #laravel
#php #laravel
Вопрос:
Недавно я использовал обозначение массива при именовании полей ввода html. например
<input type="text" name="user[$userId][licenseStatus]">
Я никогда раньше не использовал этот синтаксис, и, хотя он чрезвычайно удобен, я не вижу хорошего способа получить доступ к данным, хранящимся в сеансе, из представления при использовании Laravel.
Например, я мог бы захотеть вернуть старые данные обратно во входные данные, например, когда, скажем, происходит сбой проверки:
<input type="text" name="user[$userId][licenseStatus]" value="{{session()->getOldInput(user[$userId][licenseStatus], '')}}">
Но это, очевидно, не работает, потому что синтаксис массива в поле name означает, что данные хранятся в массиве в сеансе, подобном этому:
[
_old_input => user[
32=>licenseStatus = 'xyx',
12=>licenseStatus = 'xyz'
]
]
Итак, есть ли разумный способ получить старые входные значения?
Спасибо,
Ответ №1:
Если возникает ошибка проверки, в контроллере выполните перенаправление с входными значениями. Например.:
return redirect('form')->withInput();
Затем в самой форме вы можете поместить значение формы следующим образом:
<input type="text" name="user[$userId][licenseStatus]" value="{{ old('user.$userId.licenseStatus') }}">
Вы можете дважды проверить в документации laravel: https://laravel.com/docs/8.x/requests#flashing-input-then-redirecting
Комментарии:
1. Спасибо Aceraven! Я совершенно забыл о точечном синтаксисе Laravel. Я новичок в использовании фреймворка.