Laravel 5.1中的自定义验证规则

时间:2015-10-14 20:16:52

标签: php validation laravel-5.1

我已将自定义验证规则添加到我的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中添加自定义验证规则的最佳/最干净方法是什么?

1 个答案:

答案 0 :(得分:1)

嗯,这里可能的解决方案是创建一个自定义函数(辅助函数为from PIL import Image import StringIO import binascii # In your case, 's' will be the string from the field # in the database. s = open("chenchi.txt").read() # chop off the '0x' at the front. s = s[2:] # Decode it to binary. binary = binascii.unhexlify(s) # Wrap the bytes in a memory stream that can be read like a file. bytes = StringIO.StringIO(binary) # Use pillow to read the memory stream into an image (it autodetects the format). im = Image.open(bytes) # And show it. Or you could .save() it. im.show() )以避免外观。

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');