【发布时间】:2018-01-20 01:58:15
【问题描述】:
我有一个包含这些字段的表单:shipping_method (hidden field with value="2" in my testing case)courier_idtracking_nodelivery_date
仅当 shipping_method 为 2 时才需要 courier_id 字段
<div class="form-group{{ $errors->has('courier_id') ? ' has-error' : ''}}">
<label>Courier</label>
<select name="courier_id" class="form-control">
<option value="">Select...</option>
@foreach($couriers as $courier)
<option value="{{ $courier->id }}">{{ $courier->name }}</option>
@endforeach
</select>
@if ($errors->has('courier_id'))
<span class="help-block">
<strong>{{ $errors->first('courier_id') }}</strong>
</span>
@endif
</div>
在我的控制器中:
public function update(Request $request, $id)
{
$delivery_date = Null;
$courier_id = Null;
$order = Order::findOrFail($id);
$status = 0;
if($order->status == 2) {
$status = 3;
$courier_id = $request->courier_id;
$messages = [ 'courier_id.required' => 'Please select a courier'];
$v = Validator::make(Input::all(), [
'tracking_no' => 'required',
'delivery_date' => 'required|date_format:d/m/Y'
], $messages)->validate();
$v->sometimes('courier_id', 'required', function (Request $request) {
return true;
//return $request->shipping_method == 2;
});
即使 courier_id 是空的,我也没有得到它的错误。
我有三个问题:
为什么即使我只是在有时检查中返回 true,我也没有收到错误
不确定我应该发送给有时检查的参数是什么,是 Request $request 吗?
-
我尝试将订单发送到有时检查而不是请求,因此我不必在表单上为其设置隐藏字段,例如
$v->sometimes('courier_id', 'required', function ($order) { return $order->shipping_method == 2; });
再一次,没有显示错误。
订单状态肯定是2。
我也试过了:
$v->sometimes('courier_id', 'required', function ($order) {
return $order->shipping_method == '2';
});
如果我删除有时检查,并根据需要添加courier_id 验证,我确实会在表单上收到错误。
【问题讨论】: