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

查看:43
本文介绍了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 MyAppServices;

class Validator extends IlluminateValidationValidator{

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

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

Then, use a service provider to extends the core:

namespace MyAppProviders;

use MyAppServicesValidator;
use IlluminateSupportServiceProvider;

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' => [
    ...
    ...
    'MyAppProvidersValidatorServiceProvider';
]

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

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