#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. Я тоже пробовал это. Я все еще получаю тот же результат, который заключается в том, что он не возвращает значения.