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 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屋!