Admin

Publié il y a 28 mois,4 jours

Salut,

Ici bientôt, le tutoriel du plugin lbCartPlugin qui permet d'ajouter un panier à votre site.

 

 

 

alt text

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 cheeky

 

  • Conseils et pré-requis

    1. Vous devez installer le plugin sfJqueryReloadedPlugin pour avoir accès aux fonctions ajax
    2. 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 :

  1. Bientôt un screencast içi : Video

  2. you can follow the instructions below

  3. 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

Ajout d'un commentaire :

 

Votre email ne sera jamais publié

Doit débuter par http:// ou https://
 
glixen
il y a 27 mois,20 jours...

 

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?

 
il y a 27 mois,20 jours...

Salut,

as-tu une demo?  J'aimerais bien voir ça en action, ton plugin semble bien intéressant.

Merci, JP

 
il y a 27 mois,17 jours...
  1. Hello Glixen,

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

 
il y a 26 mois,25 jours...

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 

 
il y a 26 mois,25 jours...

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

 
il y a 26 mois,25 jours...

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()')) ?>

 
il y a 26 mois,25 jours...
Message supprimé par l'administrateur
 
il y a 26 mois,23 jours...

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

 
il y a 24 mois,24 jours...

Salut  Lenny !

Bravo pour ton site , je suis souvent dessus à apprendre des choses smiley

J'attendais tjrs une version stable de ta gestion de caddie. Mais toujours pas frown .

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

Cela ne marche pas encore mais je ne deséspère pas je vais essayer de recopier les fichiers un à un ! blush

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-

 

 

 
il y a 24 mois,23 jours...

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

 
il y a 21 mois,28 jours...
Message supprimé par l'administrateur
 
il y a 18 mois,11 jours...

Bonjour,

pour désactiver un champ, il faut noter "disabled" et non "disable" dans le yaml.

 
il y a 18 mois,11 jours...

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

 
Flho
il y a 18 mois,11 jours...

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 ...

 
il y a 18 mois,7 jours...

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 :

 

                /* MAKE THE AJAX LINK*/
                echo jq_link_to_remote($img, array(
                    'update' => $el,
                    'url' => url_for(@lbCartPlugin_Add)."?name=".$model."&id=".$id.$view,
                    'loading' => '$("#loaderAdd").show()' ,
                    'completed'=> '$("#loaderAdd").hide()'
)) 
?>
Où mettez vous à jour la valeur "quantité" ? On est donc obligé de recharger la page pour voir la nouvelle valeur. C'est dommage ...
 
Dernière question : quel est l'intérêt de déporter "cart/editbox" dans un component ? Pourquoi ne pas l'avoir laissé dans "cart/row" puisqu'il ne peut pas vivre ailleurs ?
 
C'est dommage un plugin pas fini, il y avait pourtant suffisamment d'intelligence dedans pour faire un beau produit :-(
Merci de votre travail,cela m'a permis d'avancer un peu ..
 
il y a 18 mois,6 jours...

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.

 
il y a 8 mois,17 jours...
You should take part in a contest for one of the greatest blogs online. I'm going to recommend this website!
 
il y a 8 mois,17 jours...
Exceptional post however I was wondering if you could write a litte more on this subject? I'd be very thankful if you could elaborate a little bit more. Many thanks!
 
il y a 8 mois,14 jours...
It's actually a nice and helpful piece of information. I'm happy that you just shared this useful information with us. Please keep us informed like this. Thanks for sharing.
 
il y a 8 mois,12 jours...
Hello to every single one, it's genuinely a good for me to pay a quick visit this site, it includes precious Information.
 
il y a 4 mois,9 jours...
dans tous les camps on peut sortir les aferfais...les Guerinni dans le sud et mafia rose dans le nord pour hollande.... etc, etc ...
 
il y a 3 mois,27 jours...

eplica louis vuitton luggage handbags

 
il y a 3 mois,19 jours...
http://antiedmedicine.com/|viagra sale 82213 http://www.msgvarsitysummerstars.com/|cheapest car insurance udcqc
 
il y a 3 mois,15 jours...
 
il y a 2 mois,27 jours...

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.

 
il y a 2 mois,27 jours...

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.

 
il y a 2 mois,14 jours...
xsfvb http://1viagracanada.com/ Order Viagra Online without Script gfxmd http://1buyviagraonlinee.com/ Order Viagra Online without Script zxqhi http://1viagraonlinee.com/ Canadian Pharmacy xkhnj http://1canadianviagra.com/ Discount Pharmacy Purchase Viagra vgpjm http://1canadianpharmacyviagra.com/ Generic Viagra Online Canadian Pharmacy inivq http://1viagraonlinecanadapharmacy.com/ Generic Viagra Canada without Prescription nszl
 
il y a 2 mois,14 jours...
lpqky http://1viagracanada.com/ buy viagra online canada tyjur http://1buyviagraonlinee.com/ Buying Viagra Online without Prescription aonnk http://1viagraonlinee.com/ canadian viagra cheap xpfzw http://1canadianviagra.com/ canadian pharmacy viagra kwcmg http://1canadianpharmacyviagra.com/ viagra online canada pharmacy toronto opbja http://1viagraonlinecanadapharmacy.com/ Canada Viagra Online without Prescription yejc
 
il y a 2 mois,14 jours...
cbxaz http://1viagracanada.com/ Generic Viagra Online lmali http://1buyviagraonlinee.com/ Generic Viagra Online vxuak http://1viagraonlinee.com/ Canadian Viagra Reviews ucvfk http://1canadianviagra.com/ canadian pharmacy viagra nutdk http://1canadianpharmacyviagra.com/ Viagra On Line Canada ulzdw http://1viagraonlinecanadapharmacy.com/ Canadian Viagra Reviews psdd
 
il y a 2 mois,14 jours...
gntsi http://1viagracanada.com/ buy viagra online canada cheap xqmlt http://1buyviagraonlinee.com/ viagra online without prescription overnight ckhiz http://1viagraonlinee.com/ Is Canadian Viagra Safe abptc http://1canadianviagra.com/ canadian pharmacy viagra rxnuh http://1canadianpharmacyviagra.com/ viagra online canada pharmacy generic 100 dtutd http://1viagraonlinecanadapharmacy.com/ viagra canada rxjy
 
il y a 2 mois,13 jours...
cialis online canadian pharmacy burqo http://1cialisonlinee.com/ buy cialis online without a prescription pebyh http://1buycialisonlinee.com/ buy discount generic viagra opdfo http://1cheapgenericviagra.com/ yhu
 
il y a 2 mois,13 jours...
cialis online usa pharmacy fwvjs http://1cialisonlinee.com/ buy cialis online no prescription canada ruhtf http://1buycialisonlinee.com/ cheap generic viagra without prescription exsud http://1cheapgenericviagra.com/ mkk
 
il y a 2 mois,11 jours...
canadian pharmacies buy cialis peemr http://1canadianpharmacycialisonline.com/ cheap canadian pharmacy levitra vhxpi http://1levitracanadaonline.com/ byhc
 
il y a 2 mois,11 jours...
generic cialis online canada fsuqe http://1canadianpharmacycialisonline.com/ generic levitra without prescription canada qgint http://1levitracanadaonline.com/ sxwa
 
il y a 2 mois,11 jours...
buy generic cialis online canada vcxop http://1canadianpharmacycialisonline.com/ levitra sales canada kaoyc http://1levitracanadaonline.com/ ojhz