2015-10-14 196 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