4
我有兩個字段,即數字和百分比。我希望用戶只在一個輸入字段中輸入值。如果用戶在數字和百分比字段中輸入值,系統應該拋出驗證錯誤。有什麼我們可以用laravel驗證來做到這一點?Laravel驗證:只需要,只有一個字段
謝謝。
我有兩個字段,即數字和百分比。我希望用戶只在一個輸入字段中輸入值。如果用戶在數字和百分比字段中輸入值,系統應該拋出驗證錯誤。有什麼我們可以用laravel驗證來做到這一點?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',
];
}
}
更新 只是測試它在廷克:
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