首页 > 解决方案 > 根据 Laravel 中是否选中复选框来更改定价

问题描述

我正在尝试计算 Laravel 的一些运费。基于重量只有两个选项,我可以使用 if/else 语句。客户想添加一个选项,如果有人想更快地运送他们的物品并且他们在优先权重量之下,他们可以支付额外的运费。我在刀片模板中设置了一个复选框,但不是 100% 确定如何实现它。我会假设我必须做一些 if isset 声明。

这是我的刀片模板中的代码:

@if( $total_weight <= 16.00)
            <li class="payment__item">
                <label for="priority">Priority Mail</label>
                <span style="padding-top: 2.5%;">
                    <input type="checkbox" name="priority" value="1" {{ $shipping_cost['attributes']['priority'] == '10' ? 'checked="checked"' : '1'}} >
                </span>
            </li>
            <li class="payment__item">Total:
                <span>${{ number_format($payment_total + $shipping_cost, 2, '.', '')}} </span>
            </li>
            @else
            <li class="payment__item">Total: <span>${{ number_format($payment_total + 10, 2, '.', '')}} </span>
        </li>
        @endif

在我的控制器中,我有这个用于我的公共功能:

public function showPayment() {
    $cart = Session::get('cart');
    $payment_info = Session::get('payment_info');


    if($payment_info['status'] == 'on_hold' ) {
         $total_weight = $cart->totalWeight;
         // $shipping_cost = $cart->totalPrice + 5;
         $sales_tax = $cart->totalPrice * .085 ;
         $payment_total = $cart->totalPrice + $sales_tax;

        return view('cart.payments', ['payment_info' => $payment_info, 'cartItems' => $cart, 'sales_tax' => $sales_tax, 'shipping_cost' => $shipping_cost, 'total_weight'=>$total_weight, 'payment_total' => $payment_total]);

    }else{
        return redirect()->route("home");
    }
}

任何帮助深表感谢。

编辑这里是正在传递的数据

付款信息

支付总额

销售税

重量

标签: laravellaravel-blade

解决方案


使用 javascript 检查复选框是否被选中。如果是,则将优先运输成本添加到总成本中

var input = document.querySelector('input[type=checkbox]');

function check() {
    var a = input.checked ? "{{$payment_info['price'] + number_format($sales_tax, 2, '.', '') + 10 }}" : "{{$payment_info['price'] + number_format($sales_tax, 2, '.', '') + 5 }}   ";
    document.getElementById('total').innerHTML = '$ ' + a;
}
input.onchange = check;
check();

推荐阅读