自定义验证器在Laravel 5中 [英] Custom validator in Laravel 5

查看:84
本文介绍了自定义验证器在Laravel 5中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我将Laravel应用程序从4升级到5.但是,我有一个自定义验证器,无法使用.

I am upgrading my Laravel application from 4 to 5. However, I have a custom validator that I cannot get to work.

在L4中,我制作了一个 validators.php 文件,并使用require app_path().'/validators.php';将其包含在 global.php 中.

In L4, I made a validators.php file and included it in global.php using require app_path().'/validators.php';.

我尝试在L5中做一些相同的事情.我将验证器放入了 app/Validators/Validators.php 中,并更新了我的 composer.json .

I tried doing somewhat the same in L5. I dropped a validator in app/Validators/Validators.php, and updated my composer.json.

"files": [
    "app/Validators/Validators.php"
]

但是,现在任何页面上都没有任何内容.我做错了什么?

However, now nothing renders on any page. What've I done wrong?

推荐答案

尝试以下操作:

  1. 创建一个绑定类,您可以在其中实现要扩展Validator类的每个规则.
  2. 使服务提供商扩展ServiceProvider.
  3. config/app.php文件中添加您的自定义验证程序提供程序.
  1. Make a bind class where you can implement each rule you want extending Validator class.
  2. Make a service provider that extends ServiceProvider.
  3. Add your custom validator provider at config/app.php file.

您可以在Services文件夹中创建绑定,如下所示:

You can create the bind at Services folder like this:

namespace MyApp\Services;

class Validator extends \Illuminate\Validation\Validator{

    public function validateFoo($attribute, $value, $parameters){  
        return $value == "foo"
    }
}

然后,使用服务提供商扩展核心:

Then, use a service provider to extends the core:

namespace MyApp\Providers;

use MyApp\Services\Validator;
use Illuminate\Support\ServiceProvider;

class ValidatorServiceProvider extends ServiceProvider{

    public function boot()
    {
        \Validator::resolver(function($translator, $data, $rules, $messages)
        {
            return new Validator($translator, $data, $rules, $messages);
        });
    }

    public function register()
    {
    }
}

最后,像这样在config/app.php导入服务提供商:

Finally, import your service provider at config/app.php like so:

'providers' => [
    ...
    ...
    'MyApp\Providers\ValidatorServiceProvider';
]

这篇关于自定义验证器在Laravel 5中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆