Salut,
Ici bientôt, le tutoriel du plugin lbCartPlugin qui permet d'ajouter un panier à votre site.
Plus qu'un panier commercial, le "cart" de lbCartPlugin vous permettra de mettre n'importe quel objet ayant le comportement ( actAs ) Cartable dans votre panier. Ainsi, il peut servir pour l'utilisateur à référencer des contacts, des livres, des films, n'importe quel objet présent sur le site finalement, qu'il soit monnayé ou non !
De plus, ce plugin enregistrant les données ajoutées au panier dans une table vous permettront de faire une analyse des produits généralement associés et de pouvoir ainsi faire du cross marketing et proposer ainsi des objets susceptibles d'intéresser l'utilisateur, commerciaux ou non.
Les multiples paramètres de configuration vous permettront de régler le panier exactement comme vous le voulez, en fonctionnalité comme en apparence. Vous aurez bientôt accès à un tutoriel vidéo, il faut juste que je trouve le temps de le faire ![]()
-
Conseils et pré-requis
- Vous devez installer le plugin sfJqueryReloadedPlugin pour avoir accès aux fonctions ajax
- Le panier est pleinement fonctionnel lorsqu'il est lié à des utilisateurs. Pour cette première version, il ne gère que le modèle sfGuardUser, donc je vous conseille d'installer et d'utiliser sfDoctrineGuardPlugin
-
Tutoriel :
-
Bientôt un screencast içi : Video
-
you can follow the instructions below
-
Vous pouvez suivre les instructions en anglais : http://leny-bernard.com/en/show/article/lbcartplugin
Installation:
Pour installer le plugin lbcartplugin : Tapez cette commande symfony :
plugin:install lbcartplugin
OU
Téléchargez ce fichier et extractez son contenu dans le répertoire plugins de votre projet, ajoutez enfin au fichier config/ProjectConfiguration.class.php cette ligne :
$this->enablePlugins('sfDoctrinePlugin','sfJqueryReloadedPlugin','lbCartPlugin');
Déployez les ressources du plugin avec cette commande :
symfony publish-assets
Videz le cache :
symfony cc
Une dernière tache consiste à autoriser le module cart dans le fichier de config /apps/frontend/settings.yml :
all:
.settings:
enabled_modules: [default, cart]
Vous avez désormais accès aux fonctionnalités du panier. Malheureusement, le panier n'accepte que les objets ayant le comportement Cartable, comportement Doctrine que j'ai créé afin d'avoir une base commune pour les objets ajoutés.
Il faudra ensuite remplir le fichier de configuration pour avoir le comportement adéquat.
2 Etapes restantes :
-
actAs : Cartable :~ Vous devez ajouter le comportement Cartable aux modèles que vous voulez mettre dans votre panier. Par exemple, si vous avez un modèle nommé Film :
Film: actAs: Cartable: ~ Timestampable: ~ columns: user_id: type: integer fixed: false unsigned: false primary: false autoincrement: false
Le comportement Cartable créé les champs suivants TITLE, DESCRIPTION, AMOUNT, PHOTO et CURRENCY (qui est lié à la table currency qui stock les devises du monde entier.
Si vous voulez désactiver le champ TITLE par exemple, il faut entrer ceci :
-
Film: actAs: Cartable: title: disable: true Timestampable: ~:
Voici maintenant les configurations disponibles et surchargeables :
all:
lbCartPlugin:
user_class: sfGuardUser # [sfGuardUser,member]
login_field: username # if you use another user class, define here the login field (Mandatory)
login_strict_mode: 1 # 0 => the user haven't to be logged, 1 => he have to be (the cart won't be displayed and won't works).
object_classes_names: # set all the objects you've setted up the Cartable behaviour, usefull for a manual cart add (in backend for example)
- film
- serie
css: /lbCartPlugin/css/cart.css # set here your own style file
images_path: /lbCartPlugin/images/ # set here your home path which will contain your 4 next button's images
images: # define the name of the button's image
add: add_48.png
show: show_48.png
delete: delete_48.png
loader: ajax-loader.gif
labels: # define the button's title attributes
add: + Ajouter à mes favoris
show: Afficher mon panier
delete: Vider mon panier
loader: Enregistrement en cours
*user_class
Le champ de configuration user_class definie le type d'utilisateur utilisé dans l'application. Pour cette première version, on ne peut utiliser que sfGuardUser ou Member, une classe utilisée dans un de mes projets. Si vous choisissez Member, vous devez juste parametrer l'attribut login pour l'utilisateur. Si vous utilisez un autre nom d'identifiant comme username par exemple, vous pouvez le parametrer avec le champ de configuration login_field. De plus, vous pouvez parametrer si l'utilisateur DOIT ou pas être connecté pour utiliser le panier (login_strict). Votre classe utilisateur doit avoir cette méthode $user->isAuthenticated()
Reconstruisez les classes et la base de données et chargez les données de base (devises) :
symfony build --all --and-load --no-confirmation
Utilisation
Pour afficher les boutons dans la vue, vous allez devoir ajouter cette ligne en passant en paramètre le nom du modele de l'objet à ajouter ainsi que son id et les boutons à afficher :
'film','id' => $myObject->getId(),'actions'=>array('add','delete','show'))) ?>
Les boutons (add, delete, show) qui n'auront pas leur nom dans le tableau actions ne s'afficheront pas. Le plugin est dans un mode beta pour l'instant, merci d'être respectueux, d'autres versions suivront.
Je reste disponible si vous avez des question, des idées et si vous voulez participer au développement.

Télécharger le fichier


fds




Ajout d'un commentaire :
Hi, I have a problem with the cart. I need users to (but not identified) can add
products to cart (I've changed login_strict_mode: 0). But when I click on add to cart isempty.
If I put login_strict_mode: 1 (and I login) if I can add products to cart
What I can do?
Salut,
as-tu une demo? J'aimerais bien voir ça en action, ton plugin semble bien intéressant.
Merci, JP
I think I understood your problem.
You seems to have understand the login_strict_mode, you have to put on 0 if you want that your users use it without being identified. You said that when you click on add, your cart stay empty when you go see it ?
Did you correct put the models name in the configuration ? In my tutorial I add Films in my cart, you should notice that i put "film" in the configuration file (app_lbCartPlugin_object_classes_names), this is a protection to have corrects records in database or in session if the user isn't logged, if you dont do this, the object_classes_name in the database or in the session will be empty, so you won't get any records.
Tell me more if this isn't the answer to your problem.
2. Salut Jean Philippe,
En ce qui concerne une démo, je vais faire ca des que je pourrais c'est vrai que ca peut etre bien ! Je ferais au moins une petite vidéo d'installation et de démonstration. Il va juste falloir etre un tout petit peu patient.
Leny
Bonjour,
Beau boulot et facilement customisable.
Petite amelioration possible, si on ajoute ou supprime des elements dans le panier, avoir la possibilite de le voir en direct dans le panier. (sans devoir recharger la page)
Si je fini par le faire je proposerais me modifications
Merci Sogox,
Je vais tenter de sortir une nouvelle version un peu améliorée dans les prochaines jours, j'ai déja fait ce dont tu parle, il faut juste que je peaufine la version et ca devrait être bon...
Dis moi si tu fait du travail desus, faut profiter de l'open source
Finalement effectivement je l'ai codé en modifiant un peu ton code.
Je dis a Jquery de rafraichir ma div en cas de success. C'est surement pas tres propre :)
La je bloque sur le vidage du panier.
echo jq_link_to_remote($img, array(
'update' => $el,
'url' => url_for(@lbCartPlugin_Add)."?name=".$model."&id=".$id.$view,
'loading' => '$("#loaderAdd").show()' ,
'complete' => '$("#cart").load(
"/refresh/cart")',
'success'=> '$("#loaderAdd").hide()')) ?>
Salut Sogox,
Désolé mais le compte que tu m'a créé sur ton site ne fonctionne pas ou plus...
Envois moi un mail plutôt
a bientôt,
Leny
Salut Lenny !
Bravo pour ton site , je suis souvent dessus à apprendre des choses
J'attendais tjrs une version stable de ta gestion de caddie. Mais toujours pas
.
SfDemo que tu dois connaitre est pas mal aussi mais y'a pas de gestion des users !
J'ais installé le plugin ensuite j'ai télechargé tes fichiers mais y'a qqs differences. Entre les 2 je pense !
Le fichier showSuccess.php par exemple est mal passé "echo __("Le panier est vide");"
Cela ne marche pas encore mais je ne deséspère pas je vais essayer de recopier les fichiers un à un !
As tu déja installé Apostrophe en tant que plugin ? c'est assez dur ! Mais cela doit être pas mal ensuite pour l'intégrer à une appli existante.
A-
Salut Rachid,
Merci pour tes compliments et remarques, j'ai été beaucoup pris ces dernieres semaines si bien que je n'ai pu faire évoluer mon site et mes projets perso comme je le voulais...
J'espère trouver le temps d'ici peu pour implémenter des améliorations dans le plugin lbCartPlugin et celui des galleries aussi !
En ce qui concerne SfDemo, je ne connais pas, qu'est ce donc ?
Pour ce qui est d'Apostrophe, j'ai beaucoup programmé dessus depuis deux mois, j'ai fait le site de BIXI, c'est le système comme le Vélib de Paris mais pour Montréal-Toronto-Ottawa-Londres-Washington ! C'était vraiment fun et Apostrophe nous a permit de faire un job vraiment très intéressant en battant des records de vitesse !!
Malgré le fait qu'on ai du modifier beaucoup de choses dans Apostrophe, c'est vraiment un beau projet qui fait vraiment un bel effet devant le client.
Bon allez je retourne bosser moi. Bonne chance et j'enverrais un message à tous ceux qui ont parlé sur ce sujet lorsque je sortirais la nouvelle version du plugin !
à bientôt
Bonjour,
pour désactiver un champ, il faut noter "disabled" et non "disable" dans le yaml.
C'est très bizarre : "currency" ne veut pas fonctionner ! Je suis obligé de le désactiver ...
J'ai une table "produit" à laquette j'ajoute le comportement actAs: Cartable. Elle prend donc les champs "title, description, currency_id..." --> ces champs sont bien créés dans la table (= visible par phpMyAdmin).
Je fais des fixtures pour "Produit" et j'ajoute donc à mes datas en yml :
Currency: Currency_54
pour que "Produit" aille chercher dans les fixtures de "Currency" la référence "Currency_54" (= euro).
Quand je fais un "doctrine:build --all --and-load", j'ai une "integrity violation aforeign Key Constraints" sur cette clé étrangère "currency_id" (local) et "id" (foreign).
D'où ma question :
comment déclarer "Currency" dans mes fixtures de "Produit".
Merci
J'avoue que je galère un peu à la configuration. Ce plugin est référencé dans les Plugins de Symfony, c'est donc un bon plugin. Néanmoins, je suis étonné de constater que :
- il n'est pas précisé qu'il faut activer le "i18n" pour éviter d'avoir une "undefined function __()" sur la vue "cart"
- Lorsque l'on définit, dans app.yml : "user_class: Member", il est précisé que l'on doit "you just have to set a user attribute (in session) named as you mentioned in the login_field configuration item". Bien. Mais dés que l'on fait un "doctrine:build", on a une erreur : il n'y a pas de Class Member
- lorsque l'on fait une vue "index" avec une liste en tableau (table) de "produit", chaque ligne étant un "produit_item", on met en bout de ligne (td) de tableau le component... Les trois caddye apparaissent (add, show, delete) mais ... ne produissent aucune action ! Le "add" n'ajoute rien dans la tbl "cart", le "delete" tourne sans fin, quant au "show", il emmène sur la vue "cart" qui dit :Notice: Undefined index: in /Users/flho2011/Sites/ALISS/site-aliss/plugins/lbCartPlugin/modules/cart/actions/actions.class.php on line 108
A mon avis, si ce panier a déjà fonctionné une fois, il doit y avoir une explication simple ...
Bon,après plusieurs jours dessus, je crois que je vais laisser ce superbe plugin de côté. Il aura eu au moins l'avantage de me faire avancer ...
Néanmoins, j'aimerai savoir - puisque c'est une version béta - à QUEL MOMENT vous êtes vous arrété ?
Premier exemple : l'erreur sur le manque de Class "Member" vient du fait que, lorsque l'on est "member", le code va chercher le "member" dans une table. Or, CETTE TABLE N'A PAS ÉTÉ CRÉÉE ! C ballot ! Donc , je suis resté en "connected" pour me référer à la table sfGuard
Second exemple : lorsque l'on considère le panier (cart/show) , on a le "caddye plus" et le "caddye moins". Le "plus" ajoute en Ajax un item de la ligne et le "moins" en retire un mais ... pourquoi ne pas avoir fait un callback pour mettre à jour la data "$item->getQuantity" (cart/row) ? Vous écrivez :
Erratum ! Ce plugin est tout de même bien pensé (bien qu'il soit incomplet). J'ai compris la présence des helpers en lisant la doc de sfJqueryReloadedPlugin. J'ai transformé le partial "cart/show" en component (pour afficher le panier dans une colonne permanente), j'ai inclus la "quantity" dans le partial "cart/edit/box" pour qu'elle se mette à jourlorsqu'on "add" ou "delete". J'ai créé un partial "cart/addCaddie" sur le modèle de "cart/editbox" pour le placer en fin de ligne d'un tableau-liste d'éléments.
Tout cela en mode "logué obligatoire" (sfGuardUser).
Il reste à créer une table "Member" dans la DB pour faire fonctionner le mode "non logué" et à supprimer la ligne d'un item lorsque la "quantity" est zéro, et ce sera parfait.
Donc : merci pour ce plugin.
eplica louis vuitton luggage handbags
Do you have some new Gift Ideas on the Valentines Day? The unique Valentines Day gifts at Gift Ideas Etc feature artful treasures that are sure to be a lasting memento of the truest feelings from deep within your heart. Our new Valentine's Day gift ideas are sure spark a romantic chord with that someone special. Whether you're shopping for the perfect Anniversary Gifts for him or are searching for romantic Valentine's Day gifts for her, you're sure to find something here that will create a long lasting impression. If you're the creative type and prefer making your own homemade Artificial Flowers, there are plenty of great goodies here to fill it. If you don't find what you're looking for on this page, there are hundreds of unique gift ideas for both guys and women throughout the Gift online store.
A few days after placing my order, I contacted customer service to inquire as to the status. The representative was very helpful and informative. I received my order in just over a week. When I received my order, it was exactly as it was described and was of good quality. It was exactly what I had been looking for (something I hadnt been able to find in my local in-store searches). I would defintely use www.buyuniquegifts.net for future purchases.
Do you have some new Gift Ideas on the Valentines Day? The unique Valentines Day gifts at Gift Ideas Etc feature artful treasures that are sure to be a lasting memento of the truest feelings from deep within your heart. Our new Valentine's Day gift ideas are sure spark a romantic chord with that someone special. Whether you're shopping for the perfect Anniversary Gifts for him or are searching for romantic Valentine's Day gifts for her, you're sure to find something here that will create a long lasting impression. If you're the creative type and prefer making your own homemade Artificial Flowers, there are plenty of great goodies here to fill it. If you don't find what you're looking for on this page, there are hundreds of unique gift ideas for both guys and women throughout the Gift online store.
A few days after placing my order, I contacted customer service to inquire as to the status. The representative was very helpful and informative. I received my order in just over a week. When I received my order, it was exactly as it was described and was of good quality. It was exactly what I had been looking for (something I hadnt been able to find in my local in-store searches). I would defintely use www.buyuniquegifts.net for future purchases.