禁用选择不';t在刀片模板中提交订单时进行验证


Disabled select doesn't validate when order is submitted in blade template

我的订单中有这种情况。刀片

<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']) }}