2015-12-10 2 views
2

У меня проблемы с двойной вложенной проверкойLaravel validation double inested

Моя форма довольно большая и содержит некоторые вложенные данные. Два из полей:

{!! Form::text('address[city]', null, [] !!} 
{!! Form::text('address[country[printable_name]]', null, [])) !!} 

Например, это работает:

'address.city' => 'required|max:255', 

но

'address.country.printable_name' => 'required|max:255|country 

бросков "требуется address.country.printable поле имени.", Даже если он имеет действительную страну.

Если я пытаюсь напечатать все с $ request-> все() я получаю следующее:

...,"address":{"city":"Maribor","country[printable_name":"Slovenia"},... 

Так что отсутствует ] после printable_name.

Если я пытаюсь напечатать

$request->input('address.country.printable_name') 

Я не получить ничего, но это работает, когда я пытаюсь это:

$request->input('address')["country[printable_name"] 

ли я что-то не так, это не поддерживается в Laravel или ошибка? В любом случае, как я могу заставить его работать?

Обходной бы это

'boat.country[printable_name' => 'required|max:255', 

, но если я оставлю это на следующий разработчик, чтобы посмотреть на код, вероятно, хотите, чтобы пнуть мою задницу.

ответ

3

Если вы хотите пунктов гнездятся массива в параметрах запроса вы должны сделать это следующим образом:

{!! Form::text('address[country][printable_name]', null, []) !!} 

Тогда вы можете получить доступ к ним, как вы изначально пытались:

$request->input('address.country.printable_name') 

Просто подумайте о его структурировании, поскольку вы получите доступ к нему в ассоциативном массиве в PHP. Если передать параметр с этим именем в форме:

address[country][printable_name] 

Затем с помощью простой PHP доступ будет так:

$_REQUEST['address']['country']['printable_name']; 

Приведенный выше пример иллюстрирует эквивалентную структуру.

+0

Попробуйте, адрес.country.printable_name ничего не вернет. Я знаю, что нужно, но это не так. –

+0

Ну что такое вывод 'dump ($ request-> all())' после того, как вы внесли изменения, которые я предложил? – Bogdan

+0

Извините, сделал опечатку, когда я впервые попробовал свой путь. Работает как шарм. Благодаря! –