Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php laravel-创建带必需\u的验证,不带和必需\u(如果有)_Php_Laravel - Fatal编程技术网

Php laravel-创建带必需\u的验证,不带和必需\u(如果有)

Php laravel-创建带必需\u的验证,不带和必需\u(如果有),php,laravel,Php,Laravel,如何为如下所示的表单创建验证:如果用户选择“old car”单选按钮选项,他需要从下拉选择列表中选择car name,然后他不必填写其余字段。若用户选择“新车”单选按钮选项,则必须插入车辆名称和编号。如果汽车没有编号,用户需要选中“无编号汽车”复选框,然后只需输入汽车名称。现在这不是我想要的工作 汽车: 旧车 新车 {!!Form::select('car',$cars,null,['class'=>'Form-control Form-control sm Form-control-sele

如何为如下所示的表单创建验证:如果用户选择“old car”单选按钮选项,他需要从下拉选择列表中选择car name,然后他不必填写其余字段。若用户选择“新车”单选按钮选项,则必须插入车辆名称和编号。如果汽车没有编号,用户需要选中“无编号汽车”复选框,然后只需输入汽车名称。现在这不是我想要的工作


汽车:
旧车 新车 {!!Form::select('car',$cars,null,['class'=>'Form-control Form-control sm Form-control-selected','placeholder'=>'Choose']) {!!$errors->first('bu','

:message

) 汽车:

车辆编号:

{!!Form::checkbox('no_number',null,false,['class'=>'Form-check-input','id'=>'car']) 无编号汽车
类控制器
...
公共函数存储(请求$Request)
{
$request->validate([
'car'=>['required\u如果:car,old','integer'],
'name'=>['required\u如果:车,新的,'string'],
“汽车编号”=>[“如果:汽车,新的,则需要”,“不需要:无汽车编号,则需要”,“唯一:汽车,c汽车编号”,“介于:10,10'之间的数字],
}
编辑
我忘了。现在,当我选择新车并发送完整表单时,它会在下拉列表下向旧车显示错误,该值必须为整数。

根据以下规则,验证规则中的顺序很重要:

第一次验证失败时停止

有时,您可能希望停止在服务器上运行验证规则 属性。若要执行此操作,请分配 属性的保释规则:

$request->validate([
    'title' => 'bail|required|unique:posts|max:255',
    'body' => 'required', ]);
在本例中,如果
title
属性上的
unique
规则失败,则
max
将不检查规则。将按顺序验证规则 他们被分配了

在您的情况下,第一条规则失败
如果:car,new',则为必填规则。
您选择了新车单选按钮,但没有为
车号提供值

因此,要解决这个问题,您只需颠倒如下规则的顺序:

public function store(Request $request)
{
      $request->validate([            
            'car' => ['required_if:car,old', 'integer'],
            'name' => ['required_if:car,new', 'string'],
            'car_number' => ['required_without:no_number', 'required_if:car,new', 
                             'unique:cars,c_number', 'digits_between:10,10'],
}

现在,当我选择新车并选中复选框时,他显示来自必填项的错误,如果:车,新。