我的订单中有这个条件.blade
<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
块正在运行。为什么没有得到else块的名字?这是我的验证规则
$validatorRules = array(
'captcha' => 'required|captcha',
'shipping_method' => 'required|in:' . implode(',', [Settings::SETTINGS_SHIPPING_NORMAL, Settings::SETTINGS_SHIPPING_EXPRESS, Settings::SETTINGS_SHIPPING_FREE])
);
答案 0 :(得分:2)
如果元素被禁用,则表单不会随您的请求一起发送,您可以启用它,因为只有在您选择的时候才能免费发货。
如果你真的想要禁用它,你可以在JS中提交你的表单时使用,并且使用相同的name
来设置值和隐藏字段,或者只是在表单中添加一个隐藏字段
{{ Form::hidden('shipping_method', /* Params */) }}
{{ Form::select('shipping_method', [
Settings::SETTINGS_SHIPPING_FREE => 'Free Delivery'
], null, ['class' => 'form-control','disabled']) }}