Laravel 验证双重嵌套
Laravel validation double nested
我在双重嵌套验证方面遇到问题
我的表单相当大并且包含一些嵌套数据。其中两个字段:
{!! 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',
但如果我离开这个,下一个查看代码的开发人员可能会想要踢我的屁股。
如果你想在请求参数中嵌套数组项,你应该这样做:
{!! Form::text('address[country][printable_name]', null, []) !!}
然后您就可以像最初尝试的那样访问它们了:
$request->input('address.country.printable_name')
只需考虑将其构造为在 PHP 中的关联数组中访问它即可。如果您在表单中传递具有此名称的参数:
address[country][printable_name]
然后使用普通 PHP 你会像这样访问它:
$_REQUEST['address']['country']['printable_name'];
以上示例说明了等效结构。
我在双重嵌套验证方面遇到问题
我的表单相当大并且包含一些嵌套数据。其中两个字段:
{!! 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',
但如果我离开这个,下一个查看代码的开发人员可能会想要踢我的屁股。
如果你想在请求参数中嵌套数组项,你应该这样做:
{!! Form::text('address[country][printable_name]', null, []) !!}
然后您就可以像最初尝试的那样访问它们了:
$request->input('address.country.printable_name')
只需考虑将其构造为在 PHP 中的关联数组中访问它即可。如果您在表单中传递具有此名称的参数:
address[country][printable_name]
然后使用普通 PHP 你会像这样访问它:
$_REQUEST['address']['country']['printable_name'];
以上示例说明了等效结构。