Sam*_*son 1 php validation laravel
我不认为我的验证器扩展是有效的,但我无法理解为什么.
服务提供者.
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Validator::extend('fail', function ($attribute, $value, $parameters, $validator) {
return false;
});
}
/**
* Register any application services.
*
* @return void
*/
public function register()
{
}
}
Run Code Online (Sandbox Code Playgroud)
我知道服务提供商的启动正在激活,因为如果我dd();在启动方法内部,我会得到输出.如果我添加一个dd();扩展闭包函数,我没有得到任何输出.
请求
class SaveOrder extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
$rules = [
'customer_id' => 'in:' . Customer::getImplodedCurrentTeamKeys(),
'pin' => 'fail'
];
return $rules;
}
}
Run Code Online (Sandbox Code Playgroud)
我知道请求正确验证,因为如果我将规则更改为'pin' => 'required'并且没有放入put,我会失败.
为什么我的自定义验证规则不起作用?
Sam*_*son 10
我在Laravel Validation文档页面的最底部找到了我的解决方案:(https://laravel.com/docs/5.4/validation)
要使规则在属性为空时运行,规则必须暗示该属性是必需的.要创建这样的"隐式"扩展,请使用Validator :: extendImplicit()方法:
通过改变方法extend来extendImplicit,我的问题得到解决.
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Validator::extendImplicit('fail', function ($attribute, $value, $parameters, $validator) {
return false;
});
}
/**
* Register any application services.
*
* @return void
*/
public function register()
{
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2138 次 |
| 最近记录: |