我遇到双重嵌套验证问题
我的表单相当大并且包含一些嵌套数据。其中两个字段:
{!! 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
抛出“地址.国家/地区.可打印名称字段是必需的。”,即使它具有有效的国家/地区。
如果我尝试使用 $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',
但是如果我离开这个,下一个查看代码的开发人员可能会想踢我的屁股。
最佳答案
如果你想在请求参数中嵌套数组项,你应该这样做:
{!! Form::text('address[country][printable_name]', null, []) !!}
然后您就可以像最初尝试的那样访问它们:
$request->input('address.country.printable_name')
只需考虑对其进行结构化,就像在 PHP 中的关联数组中访问它一样。如果您在表单中传递具有此名称的参数:
address[country][printable_name]
然后使用纯 PHP,您可以像这样访问它:
$_REQUEST['address']['country']['printable_name'];
上面的示例说明了等效结构。
关于php - Laravel 验证双重嵌套,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34206815/