Я попытался поместить все правила проверки в свою базу данных и поместить в массив
почему не работает, когда вы кладете его в массив?
$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'
]
И это не то, что вы хотите. Вы также можете попытаться научиться отлаживать мой друг. Попробуйте проверить значение $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);
$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.