J'ai eu du mal à stocker un tableau en session. Je fais un panier et ça ne semble pas fonctionner.
public function __construct(){
$product = array(1,2,3,4);
Session::Push('cart', $product);
}
puis récupérez-le dans la vue comme ceci.
{{Session::get('cart')}}
Cependant, je continue à avoir une erreur comme celle-ci.
htmlentities() expects parameter 1 to be string, array given
Tous les indices et conseils sur la création d'un panier d'achat contenant un grand nombre d'articles.
Si vous devez utiliser le tableau de session en tant que chaîne, vous devez utiliser Collection de la manière suivante:
$product = collect([1,2,3,4]);
Session::Push('cart', $product);
Cela fonctionnera lorsque vous utiliserez {{Session::get('cart');}}
dans vos fichiers HTML. Soyez conscient de Session::Push
car il ajoutera toujours les nouveaux produits dans les sessions. Vous devriez utiliser Session::put
pour vous assurer que les produits seront toujours mis à jour.
Vous stockez un tableau dans la session et, puisque {{ }}
attend une chaîne, vous ne pouvez pas utiliser {{Session::get('cart')}}
pour afficher la valeur.
Le {{ $var }}
est identique à l'écriture de echo htmlentities($var)
(un exemple très simple).
Au lieu de cela, vous pourriez faire quelque chose comme:
@foreach (Session::get('cart') as $product_id)
{{$product_id}}
@endforeach
Si vous utilisez 'Push' lors de la création initiale du tableau dans la session, celui-ci se présentera ainsi:
[
0 => [1,2,3,4]
]
Au lieu de cela, vous devriez utiliser 'put':
$products = [1,2,3,4];
$request->put('cart', $products);
Toutes les valeurs suivantes doivent être placées sur le tableau de session:
$request->Push('cart', 5);