2016-07-31 4 views
2

Я использую AJAX, чтобы отправить свой запрос, и я хочу форматировать ошибки специальным образом (все еще JSON, хотя. Я хочу, чтобы изменить структуру данных, ошибки и добавить некоторые флаги к нему)Laravel - Могу ли я повторно использовать экземпляр валидатора в контроллере?

Так, так как очевидно $this->validate просто напечатает без ошибок! И у меня нет никакого контроля над ним, я должен использовать статический метод валидатора

$whitelist = [ 
    'title'=>'required', 
    'slug'=>'present' , 
    'text'=>'present' 
]; 

$validation = Validator::make($request->all(), $whitelist); 
if($validation->fails()) 
{ 
    format_output_likeIwant($validation->messages()->messages()); 
} 

$another_whitelist = [ 
    'some_other_info'=>'required', 
]; 

Просто из любопытства, есть ли способ для меня, чтобы проверить мой $another_whitelist с существующим, например? Или я должен создать новый экземпляр валидатора для каждого списка?

Кстати, причина наличия 2 разных массивов проверки, я использую эти белые списки/массивы, чтобы заполнить экземпляр модели до сохранения/обновления в базе данных и избежать написания большого количества дополнительного кода в случае больших таблиц. 2 списка здесь, принадлежит к разным моделям/таблицам (see here for example)

Я посмотрел в документации Laravel, кажется, все примеры предположат список одного проверок

ответ

3

Это звучит, как вы хотите использовать Validator::after() или Validator::mergeRules(). Попробуйте:

public function index(Request $request) 
{ 
    $mainRules = [ 
     'title'=>'required', 
     'slug'=>'present' , 
     'text'=>'present' 
    ]; 

    /** @var \Illuminate\Validation\Validator $validation */ 
    $validation = Validator::make($request->all(), $mainRules); 

    if ($validation->fails()) { 
     //do something 
    } 

    $additionalRules = [ 
     'author' => 'required' 
    ]; 
    $validation->mergeRules($additionalRules); 

    # validates $mainRules and $additionalRules together... 
    dump(($validation->fails())); 
} 
+0

thanx, я не знаю, почему mergRules не упоминается в документации! – max

+0

@max Да, я привык к этому. Слишком много функций скрыто. – felipsmartins

Смежные вопросы