2015-10-14 134 views
0

我添加自定義的驗證規則,以我的Laravel 5.1應用程序,我現在有它AppServiceProvider設立這樣的:自定義驗證在Laravel規則5.1

Validator::extend('word_count', 'App\[email protected]'); 
    Validator::extend('required_if_not', 'App\[email protected]'); 
    Validator::extend('date_in_year', 'App\[email protected]'); 

這工作,但我想知道如果有一個更好的方法,我應該使用5.1而不是調用Validator Facade。

例如,調用一個視圖不再需要我打電話給View::request('template', $viewData)View::make('template', $viewData),而是我可以叫view('template', $viewData),這減少了我需要的「使用」我的類名稱空間的數量。我也可以做類似重定向的事情。

什麼是Laravel 5.1中用於添加自定義驗證規則的最佳/最乾淨的方法?

+1

麗莎,出頭最短方式不是最好的/最乾淨的。當項目變得越來越大時,保持秩序是件好事,而不是爲了節省一些角色而花費額外的努力時間。看看這樣:http://stackoverflow.com/questions/28417977/custom-validator-in-laravel-5/28425173#28425173 – manix

+0

這個問題是我正在做我的項目重構會議的一部分。儘量減少使用的字符數量,並且更多地學習Laravel 5.1的最佳實踐。這個應用程序是從Laravel 4.1升級而來的,所以這裏有很多仍然遵循這些實踐。 – Lisa

回答

1

那麼,這裏可能的解決方案是創建一個自定義函數(幫助函數爲view())以避免正面。

if (! function_exists('validator_ext')) { 
    /** 
    * Adding custom rules 
    * 
    * @param string $name 
    * @param array $listener 
    * @return \Illuminate\Validation\Factory 
    */ 
    function validator_ext($name, $listener) 
    { 
     $validator = app('Illuminate\Validation\Factory'); 
     $validator->extend($name, $listener); 
     return $validator; 
    } 
} 

現在你可以稱其爲:

validator_ext('word_count', 'App\[email protected]'); 

不使用輔助函數實例在啓動方法驗證的另一種方式:

$validator = app('Illuminate\Validation\Factory'); 
$validator->extend('word_count', 'App\[email protected]'); 
+1

謝謝,這些解決方案看起來很有趣。我會和他們一起玩,看看他們是怎麼回事! – Lisa