Stocker des objets dans les sessions Symfony 2
Je suis en train d'écrire un petit e-shop application avec Symfony 2 et j'ai besoin d'un moyen de stocker de l'utilisateur du panier dans une session. Je pense que l'utilisation d'une base de données n'est pas une bonne idée.
L'application va utiliser les entités comme ProduitCatégorieShoppingCart où le Produit et la Catégorie sont conservées dans la base de données et les utilisateurs seront en choisissant des produits dans leur ShoppingCart.
J'ai trouvé NativeSessionStorage classe qui est censé enregistrer une entité dans une session. Mais il n'est pas écrit, processus de mise en œuvre dans une application.
Dois-je utiliser le contrôleur ou dans un coin de la classe ShoppingCart? Pourriez-vous me donner un court exemple de la NativeSessionStorage
utilisation?
EDIT:
La question n'est pas réglée correctement:
Le but n'est pas de sauver tous les id de produit dans un cookie. Le but est de sauver une seule référence pour un panier rempli de produits) dans la mémoire de l'application côté serveur, et de les assigner bon panier de l'utilisateur. Est-ce même possible de le faire en PHP?
EDIT2:
Est une meilleure solution pour utiliser un service?
source d'informationauteur Aleš
Vous devez vous connecter pour publier un commentaire.
Ne sais pas si cette voie est la meilleure façon de stocker vos données temporaire. Vous pouvez l'utiliser pour instancier un objet de session :
$session = $this->get("session");
Ne pas oublier l'utilisation de votre contrôleur :
Ensuite, la session démarre automatiquement lorsque vous souhaitez définir une variable comme :
$session->set("product name","computer");
Ceci est basé sur l'utilisation de la Session classe, facile à comprendre. Communément définitions :
Aussi, jetez un oeil à d'autres façons de stocker vos données : Plusieurs SessionStorage
Vous pouvez faire de votre entité Serializable et sérialiser l'objet d'entité et d'enregistrer la session et ensuite de récupérer dans une autre page à l'aide de
unserialize()
. Il y a une mise en garde, pour une entité qui existe dans la base de données Doctrine2 marquera le récupérées/désérialisation entité détachée. Vous devez appeler$em->merge($entity);
dans ce cas.Vous pouvez sauvegarder l'ensemble de l'objet dans une session avec Symfony. Suffit d'utiliser (dans un contrôleur):
Attention: l'objet doit être sérialisable. Sinon, PHP se bloque lors du chargement de la session sur le start_session() fonction.
Mettre en œuvre l' \interface Serializable par l'ajout de la fonction serialize() et unserialize (), comme ceci:
Source: http://blog.ikvasnica.com/entry/storing-objects-into-a-session-in-symfony (mon billet de blog sur ce sujet)