在Laravel中添加表单提交的默认值

问题描述 投票:1回答:4

在我的控制器中,我已经获得了在我的create函数中输入的特定数据的目标列和原始字段。但是,我在这里有一些默认值,如下所示:

    $shipment->shipment_billing_status = 1;
    $shipment->created_by = $user_id;
    $shipment->cn_billtoName = request('cn_billtoName');

如您所见,$shipment->shipment_billing_status默认值应始终为1.但是,在极端情况下,我希望用户能够在两个复选框之间选择(如果需要),标题为“No Settle”和“No Charge”,或者他们的价值是2和3。

因此,在极端情况下,如果未选中“No Settle”或“No Charge”复选框,我希望记录绝对为1。

database laravel laravel-5 input
4个回答
1
投票

您可以设置输入的默认值,如果它是null,如下所示:

$shipment->shipment_billing_status = request("shipment_billing_status", 1);

如果request("shipment_billing_status")null,它会将$shipment->shipment_billing_status设置为1。我不认为这适用于""(输入被发送但设置为空值),所以你可能必须这样处理:

$billingStatus = request("shipment_billing_status");
if(!$billingStatus || $billingStatus == ""){
   $shipment->shipment_billing_status = 1;
} else {
   $shipment->shipment_billing_status = $billingStatus;
}

这应该处理在POST数据中发送值或完全省略它的情况。


0
投票

正如你所提到的,shipment_billing_status是一个复选框,如果没有选中任何复选框,则表单不会有shipment_billing_status字段。

解决方法是:

$shipment->shipment_billing_status = (isset($request->shipment_billing_status) && !empty($request->shipment_billing_status)) ? $request->shipment_billing_status : 1;

说明:条件是如果$ request具有shipment_billing_status字段并且它不为空,则使用shipment_billing_status,否则分配默认值。


0
投票

假设输入的复选框的名称是状态(单个案例,因为您只接受一个状态或没有状态),我相信您可以这样做:

// Inside the store method.

$status = request('status') ?: 1;

$shipment->shipment_billing_status = $status;

希望这应该成功。


0
投票

转到您的货件模型并添加此行

$table->integer('Billing_status')->default(1);

刷新您的迁移。

将其添加到您的视图中

<div class="form-group">
        {!! Form::label('Billing_status','Status:') !!}
        {!! Form::select('Billing_status',[1=>'shipment_billing_status',2=>'No Settle', 3=>No chare],null,['class'=>'form-control']) !!}

    </div>

如果没有选择,这将默认ship_billing_status为1。我希望这回答了你的问题。 @Matthew你试过这个吗?

© www.soinside.com 2019 - 2024. All rights reserved.