Массив правил проверки Laravel не работает - PullRequest
0 голосов
/ 20 мая 2018

Я пытался поместить все правила проверки в свою базу данных и поместить в массив, почему не работает, когда вы помещаете его в массив?

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

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

Ответы [ 2 ]

0 голосов
/ 20 мая 2018
$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.

0 голосов
/ 20 мая 2018

Пожалуйста, внимательно прочитайте документацию 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'
]

И это не то, что вам нужно.Вы также можете попробовать научиться отлаживать мой друг.Попробуйте проверить значение $Rules, запустив dd($Rules);.Итак, правильный синтаксис такой:

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

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