Атрибут имени ввода HTML в виде массива — как получить доступ к значениям в laravel

#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. Я новичок в использовании фреймворка.