如何为表单创建validate,它看起来像这样:如果用户选择“旧车”单选按钮选项,他需要从下拉选择列表中选择汽车名称,然后他不必完成剩余的字段。如果用户选择“新车”单选按钮选项,他必须插入汽车名称和号码。如果汽车没有号码,用户需要选择复选框“没有号码的汽车”,然后他只需输入汽车名称。现在它“It’这不是我想要的工作。
<form action="/action.php">
<label for="exampleFormControlFile1">Cars:</label><br>
<div id="option" role="radiogroup">
<input id="opt" type="radio" class="form-control form-control-sm" value="old" name="car" checked>Old car
<input id="opt" type="radio" class="form-control form-control-sm" value="new" name="car">New car
</div>
<div id="old_car">
{!! Form::select('car', $cars, null, ['class'=>'form-control form-control-sm form-control-chosen', 'placeholder' => 'Choose']) !!}
{!! $errors->first('bu', '<strong><p style="color:red;" class="help-block">:message</p></strong>') !!}
</div>
<div id="new_car">
<label for="exampleFormControlFile1">Car:</label><br>
<input class="form-control form-control-sm" name="name" type="text"><br>
<label for="exampleFormControlFile1">Car number:</label><br>
<input class="form-control form-control-sm" type="text" name="car_number" id="number"><br>
{!! Form::checkbox('no_number', null, false, ['class'=>'form-check-input', 'id'=>'car']); !!}
<label class="form-check-label" for="defaultCheck1">car without number</label>
</div>
<input type="submit" value="Submit">
</form>
class CarController
...
public function store(Request $request)
{
$request->validate([
'car' => ['required_if:car,old', 'integer'],
'name' => ['required_if:car,new', 'string'],
'car_number' => ['required_if:car,new', 'required_without:no_number', 'unique:cars,c_number', 'digits_between:10,10'],
}
编辑我忘了。现在当我选择新车并发送完整的表单时,它在下拉列表中显示错误,旧汽车的值必须是整数。
3条答案
按热度按时间mf98qq941#
根据文档,验证规则中的顺序很重要:
第一次验证失败停止
有时,您可能希望在第一次验证失败后停止对属性运行验证规则。为此,请将保释规则分配给属性:
在此示例中,如果
title
属性上的unique
规则失败,则不会检查max
规则。规则将按照分配顺序进行验证。在你的例子中,第一条规则失败了,你选择了new car单选按钮,但是你没有给予
car_number
一个值。因此,要解决这个问题,您只需颠倒规则的顺序,如下所示:
ipakzgxi2#
如果传入的HTTP请求包含“嵌套”字段数据,您可以使用“点”语法在验证规则中指定这些字段:
l7mqbcuq3#
当我同时需要required_if和required_without时出现相同问题,我有产品类型digital和physical,因此required_without验证应适用于**type='physical'**但有'required_without'验证的情况