Laravel 5.4 如果出现验证问题则需要
Laravel 5.4 required if validation issue
我有 2 个字段,accepts_usd 和 price_usd。
对于美元价格,我有一个验证规则:
'price_usd'=>'integer|required_if:accepts_usd,1',
对于accepts_usd:
'accepts_usd'=>'boolean|required',
当我想存储数据时,如果我将 accepts_usd 设置为 false,它仍然要求 price_usd。
这里有什么问题?我做错了什么?
来自 laravel 文档:
required_if:anotherfield,价值,...
如果另一个字段等于任何值,则验证字段必须存在且不能为空。
值不是实际值,它是另一个验证规则。
您需要将代码更改为
'price_usd'=>'integer|required_if:accepts_usd,==,1',
尝试'price_usd'=>'integer|required_if:accepts_usd,==,1',
如laravel docs所述:
required_if:anotherfield,value,...
The field under validation must be present and not empty if the
anotherfield field is equal to any value.
我在 Laravel 8 中遇到了同样的问题。所以我添加验证规则如下。
$validated = $request->validate([
'name' => ['required', 'min:3', 'max:255'],
'is_public_template' => 'boolean',
'logo' => ['bail', 'nullable', 'required_if:is_public_template,true', 'image', 'mimes:jpeg,bmp,png,jpg'],
'public_template_name' => ['bail', 'nullable', 'required_if:is_public_template,true', 'min:3', 'max:255'],
'description' => ['bail', 'nullable', 'required_if:is_public_template,true', 'min:8', 'max:255'],
'active' => 'boolean',
]);
在我的例子中,is_public_template
是一个布尔类型,所以我在required_if
前面添加了bail
和nullable
规则。
所以它工作正常。
旁注:- 你还应该转换布尔字段的值,否则它们将 return 作为普通字符串,如“1”或“0”。
我有 2 个字段,accepts_usd 和 price_usd。
对于美元价格,我有一个验证规则:
'price_usd'=>'integer|required_if:accepts_usd,1',
对于accepts_usd:
'accepts_usd'=>'boolean|required',
当我想存储数据时,如果我将 accepts_usd 设置为 false,它仍然要求 price_usd。
这里有什么问题?我做错了什么?
来自 laravel 文档: required_if:anotherfield,价值,...
如果另一个字段等于任何值,则验证字段必须存在且不能为空。
值不是实际值,它是另一个验证规则。
您需要将代码更改为
'price_usd'=>'integer|required_if:accepts_usd,==,1',
尝试'price_usd'=>'integer|required_if:accepts_usd,==,1',
如laravel docs所述:
required_if:anotherfield,value,...
The field under validation must be present and not empty if the anotherfield field is equal to any value.
我在 Laravel 8 中遇到了同样的问题。所以我添加验证规则如下。
$validated = $request->validate([
'name' => ['required', 'min:3', 'max:255'],
'is_public_template' => 'boolean',
'logo' => ['bail', 'nullable', 'required_if:is_public_template,true', 'image', 'mimes:jpeg,bmp,png,jpg'],
'public_template_name' => ['bail', 'nullable', 'required_if:is_public_template,true', 'min:3', 'max:255'],
'description' => ['bail', 'nullable', 'required_if:is_public_template,true', 'min:8', 'max:255'],
'active' => 'boolean',
]);
在我的例子中,is_public_template
是一个布尔类型,所以我在required_if
前面添加了bail
和nullable
规则。
所以它工作正常。
旁注:- 你还应该转换布尔字段的值,否则它们将 return 作为普通字符串,如“1”或“0”。