在刀片模板中提交订单时,禁用选择不会验证

时间:2016-07-28 06:48:04

标签: php laravel-4 laravel-blade

我的订单中有这个条件.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])
);

1 个答案:

答案 0 :(得分:2)

如果元素被禁用,则表单不会随您的请求一起发送,您可以启用它,因为只有在您选择的时候才能免费发货。 如果你真的想要禁用它,你可以在JS中提交你的表单时使用,并且使用相同的name来设置值和隐藏字段,或者只是在表单中添加一个隐藏字段

 {{ Form::hidden('shipping_method', /* Params */) }}
 {{ Form::select('shipping_method', [
          Settings::SETTINGS_SHIPPING_FREE => 'Free Delivery'
          ], null, ['class' => 'form-control','disabled']) }}