我有两个字段,即数字和百分比 . 我希望用户只在一个输入字段中输入值 . 如果用户在数字和百分比字段中输入值,则系统应该抛出验证错误 . 我们可以用laravel验证来实现这一目标吗?
谢谢 .
您可以为此编写自定义验证器:http://laravel.com/docs/5.0/validation#custom-validation-rules
它可能看起来像这样:
class CustomValidator extends Illuminate\Validation\Validator { public function validateEmpty($attribute, $value) { return ! $this->validateRequired($attribute, $value); } public function validateEmptyIf($attribute, $value, $parameters) { $key = $parameters[0]; if ($this->validateRequired($key, $this->getValue($key))) { return $this->validateEmpty($attribute, $value); } return true; } }
在服务提供商中注册:
Validator::resolver(function($translator, $data, $rules, $messages, $attributes) { return new CustomValidator($translator, $data, $rules, $messages, $attributes); });
使用它(例如,在表单请求中):
class StoreSomethingRequest extends FormRequest { // ... public function rules() { return [ 'percentage' => 'empty_if:number', 'number' => 'empty_if:percentage', ]; } }
Update 刚刚在修补匠中测试过:
Validator::make(['foo' => 'foo', 'bar' => 'bar'], ['bar' => 'empty_if:foo'])->fails() => true Validator::make(['foo' => '', 'bar' => 'bar'], ['bar' => 'empty_if:foo'])->fails() => false Validator::make(['foo' => '', 'bar' => 'bar'], ['foo' => 'empty_if:bar'])->fails() => false
1 回答
您可以为此编写自定义验证器:http://laravel.com/docs/5.0/validation#custom-validation-rules
它可能看起来像这样:
在服务提供商中注册:
使用它(例如,在表单请求中):
Update 刚刚在修补匠中测试过: