已禁用 select 在 blade 模板中提交订单时不验证
Disabled select doesn't validate when order is submitted in blade template
我的 order.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])
);
在表单中,如果某个元素被禁用,则它不会随您的请求一起发送,您可以启用它,因为只有在免运费的情况下,您的 select 才会有此元素。
如果你真的想禁用它,你可以在你的表单以 JS 提交时捕获,并且值和隐藏字段具有相同的 name
或者只是在你的表单中添加一个隐藏字段
{{ Form::hidden('shipping_method', /* Params */) }}
{{ Form::select('shipping_method', [
Settings::SETTINGS_SHIPPING_FREE => 'Free Delivery'
], null, ['class' => 'form-control','disabled']) }}
我的 order.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])
);
在表单中,如果某个元素被禁用,则它不会随您的请求一起发送,您可以启用它,因为只有在免运费的情况下,您的 select 才会有此元素。
如果你真的想禁用它,你可以在你的表单以 JS 提交时捕获,并且值和隐藏字段具有相同的 name
或者只是在你的表单中添加一个隐藏字段
{{ Form::hidden('shipping_method', /* Params */) }}
{{ Form::select('shipping_method', [
Settings::SETTINGS_SHIPPING_FREE => 'Free Delivery'
], null, ['class' => 'form-control','disabled']) }}