Intereting Posts

Массив хранилища Laravel в сеансе

У меня возникли проблемы с хранением массива в сеансе. Я делаю корзину и, похоже, не работает.

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);