【问题标题】:Custom Validation rules in Laravel 5.1Laravel 5.1 中的自定义验证规则
【发布时间】:2016-01-13 02:24:12
【问题描述】:

我正在向我的 Laravel 5.1 应用程序添加自定义验证规则,我目前在 AppServiceProvider 中进行了这样的设置:

    Validator::extend('word_count', 'App\CustomValidators@wordCount');
    Validator::extend('required_if_not', 'App\CustomValidators@requiredIfNot');
    Validator::extend('date_in_year', 'App\CustomValidators@dateInYear');

这可行,但我想知道是否有更好的方法我应该在 5.1 中使用,而不是调用 Validator 门面。

例如,调用视图不再需要我调用 View::request('template', $viewData)View::make('template', $viewData),而是可以调用 view('template', $viewData),这减少了我需要为我的类“使用”的命名空间的数量.我也可以对重定向做类似的事情。

在 Laravel 5.1 中添加自定义验证规则的最佳/最干净的方法是什么?

【问题讨论】:

  • 丽莎,最短的方法不是最好的/最干净的。当项目变大时,最好让事情井井有条,而不是为了节省一些角色而付出额外的努力。看看这个方式:stackoverflow.com/questions/28417977/…
  • 这个问题是我在项目中进行的重构会话的一部分。尽量减少使用的字符数量,更多的是学习 Laravel 5.1 的最佳实践。此应用程序是从 Laravel 4.1 升级而来的,因此其中有很多仍在遵循这些做法。

标签: php validation laravel-5.1


【解决方案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\CustomValidators@wordCount');

另一种不使用辅助函数的方法是在启动方法时实例化验证器:

$validator = app('Illuminate\Validation\Factory');
$validator->extend('word_count', 'App\CustomValidators@wordCount');

【讨论】:

  • 谢谢,这两个解决方案看起来都很有趣。我会和他们一起玩,看看他们怎么样!
猜你喜欢
  • 1970-01-01
  • 2017-04-11
  • 2018-02-18
  • 2019-02-12
  • 2016-11-22
  • 2015-01-26
  • 2017-12-01
  • 2016-01-23
  • 2014-04-22
相关资源
最近更新 更多