我的表格是用户可以填写出售他们的房屋。对于其中一个投注,用户必须选择天气,它将是“待售”或“出租”。如果是For Sale,将出现两个价格输入字段,如果是For Rent,那么其他一些价格输入字段将基于jQuery显示。
我的问题是我想要价格字段是必需的,但是例如如果我选择“出租”,然后我提交我的表格,它会给我一个错误说“出售”的价格字段“输入字段是必需的,即使它位于”For Rent“部分。
我知道Laravel中有 required_if ,但我不知道如何利用它。这是我对物业的要求。
<?php
namespace App\Http\Requests;
use App\Http\Requests\Request;
class PropertyRequest extends Request
{
/**
* 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()
{
return [
'list_type' => 'required',
'sale_price' => 'required', // <-- maybe like: required_if:value
'rent_price' => 'required',
];
}
}
/ ******************编辑*************************** /
我现在拥有的:
public function rules()
{
return [
'list_type' => 'required',
'sale_price' => 'required_if:list_type:For Sale',
'rent_price' => 'required_if:list_type:For Rent',
}
但是,当我提交表格时,我收到此错误:
答案 0 :(得分:66)
假设list_type是可供选择的选择框的名称(值:出售或出租)
以这种方式使用
"sale_price" => "required_if:list_type,==,selling"
这是什么意思? :
仅当list_type的值等于selling
对rent_price
修改强>
public function rules()
{
return [
'list_type' => 'required',
'sale_price' => 'required_if:list_type,==,For Sale',
'rent_price' => 'required_if:list_type,==,For Rent'
}
答案 1 :(得分:7)
您也可以直接使用Illuminate\Validation\Rules\RequiredIf
规则。
注意:此规则在Laravel 5.6及更高版本中可用。
class SomeRequest extends FormRequest
{
...
public function rules()
{
return [
'sale_price' => new RequiredIf($this->list_type == 'For Sale'),
'rent_price' => new RequiredIf($this->list_type == 'For Rent'),
];
}
}
如果需要使用多个规则,则可以传入一个数组。
public function rules()
{
return [
'sale_price' => [
new RequiredIf($this->list_type == 'For Sale'),
'numeric',
'string',
...
]
];
}
答案 2 :(得分:4)
在另一种情况下,如果不存在其他字段,则将需要此要求,如果有人处于这种情况,则可以
'your_field.*' => 'required_unless:dependency_field.*,
答案 3 :(得分:4)
您可以按照以下说明在Laravel中使用 Illuminate\Validation\Rule
来构建验证器。
$validator = Validator::make( $request->input(), [
'list_type' => 'required',
'sale_price'=> Rule::requiredIf( function () use ($request){
return $request->input('list_type') == 'For Sale';
}),
'rent_price'=> Rule::requiredIf( function () use ($request){
return $request->input('list_type') == 'For Rent';
}),
]);
答案 4 :(得分:0)
对我来说,使用这个 required_if 我需要检查两个值,我写为
camera([x], [y], [z], [centerX], [centerY], [centerZ], [upX], [upY], [upZ])