У меня возникли проблемы с хранением массива в сеансе. Я делаю корзину и, похоже, не работает.
public function __construct(){ $product = array(1,2,3,4); Session::push('cart', $product); }
а затем извлеките его в виде, подобном этому.
{{Session::get('cart')}}
Однако я все время получаю ошибку.
htmlentities() expects parameter 1 to be string, array given
Любые подсказки и советы о том, как создать корзину покупок, в которой хранится массив элементов.
Если вам нужно использовать массив из сеанса в виде строки, вам необходимо использовать Collection следующим образом:
$product = collect([1,2,3,4]); Session::push('cart', $product);
Это заставит его работать, когда вы будете использовать {{Session::get('cart');}}
в своем htmls. Помните Session::push
потому что он всегда будет добавлять новые продукты в сеансах. Вы должны использовать Session::put
чтобы убедиться, что продукты будут всегда обновляться.
Вы храните массив в сеансе, и поскольку {{ }}
ожидает строку, вы не можете использовать {{Session::get('cart')}}
для отображения значения.
{{ $var }}
echo htmlentities($var)
{{ $var }}
совпадает с написанием echo htmlentities($var)
(очень простой пример).
Вместо этого вы можете сделать что-то вроде:
@foreach (Session::get('cart') as $product_id) {{$product_id}} @endforeach
Если вы используете «push», при первоначальном создании массива в сеансе, массив будет выглядеть так:
[ 0 => [1,2,3,4] ]
Вместо этого вы должны использовать «put»:
$products = [1,2,3,4]; $request->put('cart', $products);
Любые последующие значения должны быть перенесены в массив сеанса:
$request->push('cart', 5);