我的订单中有这种情况。刀片
<div class="form-group">
<label for="shipping_method" class="control-label">Shipping method:</label>
@if( $total < $free_delivery )
{{ Form::select('shipping_method', [
Settings::SETTINGS_SHIPPING_NORMAL => 'Normal Delivery',
Settings::SETTINGS_SHIPPING_EXPRESS => sprintf('Express Delivery - $%.2f', Settings::getOption('express_shipping_cost'))
], null, ['class' => 'form-control']) }}
@else
{{ Form::select('shipping_method', [
Settings::SETTINGS_SHIPPING_FREE => 'Free Delivery'
], null, ['class' => 'form-control','disabled']) }}
@endif
</div>
当用户订购的数量超过X时,他可以免费送货。这里的问题是,当我试图提交免费交付的订单时,即在else
区块中,我得到了需要shipping method
的订单。
在IF
中,块正在工作。为什么不获取其他块的名称?这是我的验证规则
$validatorRules = array(
'captcha' => 'required|captcha',
'shipping_method' => 'required|in:' . implode(',', [Settings::SETTINGS_SHIPPING_NORMAL, Settings::SETTINGS_SHIPPING_EXPRESS, Settings::SETTINGS_SHIPPING_FREE])
);
在表单中,如果某个元素被禁用,它不会随您的请求一起发送,您可以启用它,因为只有在免费送货时,您才能选择它。如果你真的想禁用它,你可以捕捉表单在JS中提交的时间,以及相同name
的值和隐藏字段,或者只是在表单中添加一个隐藏字段
{{ Form::hidden('shipping_method', /* Params */) }}
{{ Form::select('shipping_method', [
Settings::SETTINGS_SHIPPING_FREE => 'Free Delivery'
], null, ['class' => 'form-control','disabled']) }}