自定义验证器在Laravel 5中 [英] Custom validator in 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?
推荐答案
尝试以下操作:
- 创建一个绑定类,您可以在其中实现要扩展
Validator
类的每个规则. - 使服务提供商扩展
ServiceProvider
. - 在
config/app.php
文件中添加您的自定义验证程序提供程序.
- Make a bind class where you can implement each rule you want extending
Validator
class. - Make a service provider that extends
ServiceProvider
. - 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屋!