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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Laravel中添加表单提交的默认值相关的知识,希望对你有一定的参考价值。

在我的控制器中,我已经获得了在我的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。

答案

您可以设置输入的默认值,如果它是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数据中发送值或完全省略它的情况。

另一答案

正如你所提到的,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,否则分配默认值。

另一答案

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

// Inside the store method.

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

$shipment->shipment_billing_status = $status;

希望这应该成功。

另一答案

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