php - Laravel 验证双重嵌套

标签 php laravel laravel-validation

我遇到双重嵌套验证问题

我的表单相当大并且包含一些嵌套数据。其中两个字段:

{!! 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/

相关文章:

php - Laravel数据库innerjoin表的主键不显示

php - 在 Laravel 5 中使用表单请求验证时如何添加自定义验证规则

在同一页面上使用多个表单进行 Laravel 请求验证

php - 自定义 is_unique_logical_key - 验证还是回调?

php - 如何从 while 循环语句中获取特定值

php - Laravel AJAX 请求,方法不允许

php - 在 Laravel 中使用类别进行唯一验证以进行插入和更新

php - 一个 PHP 文件中的多个 MySQL 查询

php - 在 jQuery 中获取 PHP 变量

php - Laravel 5.2 拆分字符串名字姓氏