Массив правил проверки Laravel не работает

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

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

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

0

Решение

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

Другие решения

$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

По вопросам рекламы [email protected]