Laravel 验证规则数组不工作

Laravel Validation Rule array not working

我尝试将所有验证规则放入我的数据库并将其放入数组 为什么当你把它放在数组中时不起作用?

$data = model::where('page','post.create')->get();
        foreach($data as $value){
          $Rules[] = array($value->post_name => $value->validation);
        }

$validator = Validator::make($request->all(), [$Rules]);

请正确阅读Laravel文档:https://laravel.com/docs/5.6/validation

错误出在你在 Validator::make 中的第二个参数中,你必须传递一个包含 'field' => 'validation_rule' 对的数组。例如

[
    'title' => 'required|unique:posts|max:255',
    'body' => 'required'
]

此代码 $Rules[] = array($value->post_name => $value->validation); 将自动附加数字数组,例如:

[
    'title' => 'required|unique:posts|max:255'
],
[
    'body' => 'required'
]

这不是你想要的。你也可以尝试学习调试我的朋友。尝试通过 运行 dd($Rules); 检查 $Rules 的值。 所以正确的语法是这样的:

$data = model::where('page','post.create')->get();
foreach($data as $value){
    $Rules[$value->post_name] = $value->validation;
}

$validator = Validator::make($request->all(), $Rules);
$data = model::where('page','post.create')->get();
        foreach($data as $value){
          $Rules[] = array($value['post_name'] => $value['validation']);
        }

$validator = Validator::make($request->all(), $Rules);

我认为你应该在第 3 行的数组中给出变量名,而对于使用数组 $Rules 你不应该在第 5 行的方括号中给出变量名。