【问题标题】:Laravel 'sometimes' validator fails with nested arraysLaravel“有时”验证器因嵌套数组而失败
【发布时间】:2014-05-18 11:51:44
【问题描述】:

我正在使用 Laravel Validator 类对数组进行一些基本验证。

我的数组:

$employee['name']='name';
$employee['address']='address';
$employee['department']['department_name']='deptname';
$employee['department']['department_address']='deptaddress';

我的验证规则如下:

$rules = array(
    'name'=> 'required',
    'address' => 'required',
    'department.department_name' => 'sometimes|required'
)

自定义消息如下:

$messages = array(
     'name.required' => 'Employee Name is required',
     'address.required' => 'Address is required'
     'department.department_name.required' => 'Department name is required'
)

我会用Validator::make($employee, $rules, $messages);

根据我的规则,department_name 当且仅当它存在于数组中时才应该被验证。但目前Validator 没有验证department_name 的存在和空白。有什么想法我可能做错了吗?

【问题讨论】:

  • 我向框架发送了拉取请求,所以当被接受时,我会给你留下评论
  • 酷。再次感谢 deczo。
  • 自从这个错误被指出并修复以来已经有几个月了。希望你的公关很快就会被接受@dezco。谢谢
  • 关于如何实现sometimes 规则的文档也有错误,因为它表明使用sometimes|required,但required 优先,使sometimes 毫无意义。
  • 在 4.1.* 中仍然会出现此错误。 @JarekTkaczyk,你能发布拉取请求吗?

标签: php laravel laravel-validation


【解决方案1】:

你在这里有点不对劲,看docs这里

那里提到如果我有$photos['profile'],那么我的验证将像这样进行

$validator = Validator::make($request->all(), [
    'photos.profile' => 'required|image',
]);

从上面的例子中,你的情况应该是这样的

$rules = array(
    'name'=> 'required',
    'address' => 'required',
    'employee.department.department_name' => 'sometimes|required'
)

既然你有这样的数组$employee['department']['department_name']

$message 也会这样

$messages = array(
     'name.required' => 'Employee Name is required',
     'address.required' => 'Address is required'
     'employee.department.department_name.required' => 'Department name is required'
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-17
    • 2016-03-27
    • 2014-10-23
    • 2016-08-21
    • 2019-05-27
    • 2014-05-18
    • 1970-01-01
    • 2019-04-15
    相关资源
    最近更新 更多