我遇到双嵌套验证问题
我的表单相当大,包含一些嵌套数据。其中两个领域:
{!! 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-> all()打印所有内容,我会收到以下内容:
...,"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',
但如果我离开这个,那么下一个开发人员可能会想看看代码。
答案 0 :(得分: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'];
以上示例说明了等效结构。