Умножение в контроллере Laravel не отображается в представлении

#php #laravel

#php #laravel

Вопрос:

Я пытаюсь умножить общую сумму товаров в корзине в долларах на сумму налога с продаж и отобразить ее в моем представлении. Кажется, это работает, или, по крайней мере, я не получаю ошибок, но в моем представлении не отображается налог.

В моем контроллере платежей у меня есть это

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


    if($payment_info['status'] == 'on_hold') {
        $sales_tax = $cart->totalPrice * .085;
        return view('cart.payments', ['payment_info' => $payment_info], ['cartItems' => $cart]);
        $sales_tax = $cartItems->totalPrice * .085;

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

И, на мой взгляд, у меня есть это

 <li class="payment__item">Taxes: <span>{{ $sales_tax }} </span>
                    </li>
  

Все мои другие данные работают должным образом, только не налог с продаж.

Комментарии:

1. Ваш пример сбивает с толку. Вы передаете $cartItems переменную в представление и вызываете $cart_item переменную. Внутри этого элемента у вас есть data атрибут, а внутри data sales_tax атрибута. Вы определяете $sales_taxes переменную после возврата представления и ничего с ней не делаете.

Ответ №1:

@Bahaedin имел в виду, что вам нужно конкретно определить переменную налога с продаж, если вы хотите использовать ее такой, какая она есть в представлении. И, поскольку выполнять логику / вычисления в blade — это плохая практика, вот один подход, который мог бы решить вашу проблему.

  if($payment_info['status'] == 'on_hold') {
    $sales_tax = $cart->totalPrice * .085; //move this before the return statement amp;amp; cart seems to be an object. 
    return view('cart.payments', ['payment_info' => $payment_info, 'cartItems' => $cart, 'sales_tax' => $sales_tax]); //one array, include $sales_tax as a variable.
    
  

И в вашем блейде

 <li class="payment__item">Taxes: <span>{{ $sales_tax }} </span>
</li>
  

Также обратите внимание, что если вы отправляете $cartItem переменную в представление, то вам нужно было бы ссылаться на нее с помощью $cartItem not $cart_item , поэтому $cart_item['data']['sales_tax'] это не сработало бы, даже если бы вы отправили sales_tax в $cartItem массив. Если способ, которым вы выполнили умножение, является каким-либо намеком, я бы сказал, что $ cart — это объект, а не массив.

Комментарии:

1. Спасибо, я понял, что он имел в виду. Но это не решает проблему. Если я просто пытаюсь повторить sales_tax, я получаю сообщение об ошибке, что это неопределенная переменная.

2. Можете ли вы поделиться showPayment функцией в том виде, в каком она есть сейчас, с изменениями, которые я предложил?

3. Я отредактировал свой исходный код, чтобы показать это. Я не мог понять, как его отформатировать здесь.

4. Вы не отправляете здесь переменную sales_tax return view('cart.payments', ['payment_info' => $payment_info], ['cartItems' => $cart]); Проверьте инструкцию return, которую я предложил. return view('cart.payments', ['payment_info' => $payment_info, 'cartItems' => $cart, 'sales_tax' => $sales_tax]);

5. Ааааа, да, теперь я это вижу. Я пропустил ту последнюю часть, которую вы добавили. !00% теперь имеет смысл. Вы знаете, как усечь его после двух десятичных знаков?

Ответ №2:

это потому, что вы возвращаете представление до умножения в блейде попробуйте это :

 <li class="payment__item">Taxes: <span>{{ $cart_item->totalPrice * 0.85 }} 
</span>
</li>
  

Комментарии:

1. Я сделал это изначально, и это сработало, но мне нужно иметь возможность сохранить это значение и снова добавить его к моему итогу. Я попытался поместить умножение перед возвращаемым представлением в контроллере, и это тоже не сработало. Есть мысли?

2. Когда вы помещаете умножение перед обратным представлением, вы должны использовать $ cart, а не $ cartItems

3. Я тоже пробовал это. Я все еще получаю тот же результат, который заключается в том, что он не возвращает значения.