Laravel - 我可以在控制器中重新使用验证器实例吗?

问题描述:

我使用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文档中,似乎所有的例子都假定一个验证列表

这听起来像你想使用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