2016-07-31 75 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

相關問題