Thelia 2 est maintenant disponible. Retrouvez toutes les informations ici
Thelia 2 is now available. Find all the information here

Comment créer un module Thelia - partie 3

Le blog TheliaFlux rss


< Plugins et licences pour Thelia Utilisation de github >
2013
11
février

Comment créer un module Thelia - partie 3

par Manuel Raynaud

Dans cette partie nous allons travailler sur la validation du formulaire précédemment créé, et voir de manière générale comment interagir avec les actions de l’admin.

Rappel partie 1 partie 2 Parties suivantes : partie 4 et partie 5

Le principal intérêt de développer un plugin est de pouvoir étendre les fonctionnalités du moteur de Thelia et de communiquer avec lui, sans toucher au code même de Thelia. De cette façon, pas de mauvaises surprises lors des mises à jours de Thelia, aucune modification ne risque d’être écrasée.

Une API est donc mise à disposition pour que le module interagisse avec le moteur. Nous allons voir ici quelles sont les interactions concernant le back-office.

Lors de la partie 2 vous avez réalisé un formulaire permettant de rajouter un commentaire à un produit. Dans la classe principale du plugin nous allons implémenter la méthode modprod, appelée à chaque fois qu’un produit est modifié. La méthode modprod reçoit en paramètre l’instance de la classe Produit qui vient d’être modifiée.

  1.     public function modprod(Produit $produit)
  2.     {
  3.     }

Vous pouvez consulter une liste des méthodes appelées lors d’action dans le back-office ici.

Il existe aussi des helpers permettant de récupérer les paramètres de la requête HTTP passés en méthode GET, POST ou les deux. Ils permettent de sécuriser les paramètres rentrants en les filtrant grâce à la librairie HTMLPurifier. Il s’agit de la fonction lireParam et voici sa définition :

  1.     function lireParam($param, $filtre="", $methode="", $purifier = 1)

- $param est le nom de l’input recherché.
- $filtre est le type du paramètre attendu (int, float, string, etc). Bien qu’optionnel, il est très fortement recommandé de l’utiliser.
- $méthode est la méthode HTTP (GET, POST). Si non précisé la fonction ira chercher dans les deux tableaux GET et POST.
- $purifier permet d’activer ou non le filtrage via HTMLPurifier. Par défaut il est activé et je vous déconseille vivement de le désactiver.

Avant de pouvoir enregistrer nos commentaires, il ne nous reste plus qu’à indiquer au moteur de Thelia le nom et les champs de notre table.

Pour cela nous allons nous servir des propriétés :
- chaque champs de la table est une propriété de la classe
- la propriété bddvars est un tableau contenant tous les champs de la table (ça fait un peu double emploi mais c’est nécessaire au bon fonctionnement du plugin)
- la propriété $table qui contient le nom de la table.

  1. class Commentaire extends PluginsClassiques
  2. {
  3.    
  4.     public $id;
  5.     public $titre;
  6.     public $message;
  7.     public $actif;
  8.     public $produit_id;
  9.    
  10.     public $bddvars = array("id", "titre", "message", "actif", "produit_id");
  11.     public $table = "commentaire";
  12. ...
  13. }

Nous voilà prêts pour enregistrer nos commentaires :

  1.     public function modprod(Produit $produit)
  2.     {
  3.         $titre = trim(lireParam("commentaire_titre", "string"));
  4.         $message = trim(lireParam("commentaire_message", "string"));
  5.        
  6.        
  7.         if ( empty($titre) === false && empty($message) === false) {
  8.             $commentaire = new Commentaire();
  9.             $commentaire->titre = $titre;
  10.             $commentaire->message = $message;
  11.             $commentaire->produit_id = $produit->id;
  12.                        
  13.             $commentaire->add();
  14.         }
  15.     }

Nous vérifions donc qu’un commentaire a été renseigné et si c’est le cas nous l’enregistrons. Si vous souhaitez faire d’autres contrôles je vous invite à le faire.

Il ne vous reste aujourd’hui plus qu’à lister les commentaires existants sur la fiche produit et gérer l’activation et la suppression. A vous de jouer ;-)

La semaine prochaine nous réaliserons la boucle qui affichera en front-office les commentaires validés.

Voici une liste non exhaustive des méthodes qui sont appelés lors d’action dans le back-office :

- modprod(Produit $produit) appelé après la modification d’un produit.
- modrub(Rubrique $rubrique) appelé après la modification d’une rubrique. Instance de la classe Rubrique modifiée passée en paramètre.
- moddos(Dossier $dossier) appelé après la modification d’un dossier. instance de la class Dossier modifiée passée en paramètre.
- modcont(Contenu $contenu) appelé après la modification d’un contenu. Instance la class Contenu modifiée passée en paramètre.
- ajoutprod(Produit $produit) appelé après l’enregistrement d’un nouveau produit. L’instance de la classe Produit nouvellement créée est passée en paramètre
- ajoutrub(Rubrique $rubrique) appelé après l’enregistrement d’une nouvelle rubrique. L’instance de la classe Rubrique nouvellement créée est passée en paramètre.
- ajoutcont(Contenu $contenu) appelé après l’enregistrement d’un nouveau contenu. L’instance de la classe Contenu nouvellement créée est passée en paramètre.
- ajoutdos(Dossier $dossier) appelé après l’enregistrement d’un nouveau dossier. L’instance de la classe Dossier nouvellement créée est passée en paramètre.

- supprod(Produit $produit) appelé après la suppression d’un produit. L’instance de la classe Produit supprimée est passée en paramètre.
- suprub(Rubrique $rubrique) appelé après la suppression d’une rubrique. L’instance de la classe Rubrique supprimée est passée en paramètre.
- supcont(Contenu $contenu) appelé après la suppression d’un contenu. L’instance de la classe Contenu supprimée est passée en paramètre.
- supdos(Dossier $dossier) appelé après la suppression d’un nouveau dossier. L’instance de la classe Dossier supprimée est passée en paramètre.

- ajoutpromo(Promo $promo) appelé lors de l’enregistrement d’un code promo. L’instance de la classe Promo nouvellement créée est passée en paramètre.
- majpromo(Promo $promo) appelé lors de la modification d’un code promo. L’instance de la classe Promo modifiée est passée en paramètre.
- suppromo(Promo $promo) appelé lors de la suppression d’un code promo. L’instance de la classe Promo supprimée est passée en paramètre.

- addvariable(Variable $variable) appelée lors de l’enregistrement d’une variable. L’instance de la classe Variable enregistrée est passée en paramètre.
- modvariable(Variable $variable) appelée lors de la modification d’une variable. L’instance de la classe Variable modifiée est passée en paramètre.
- delvariable(Variable $variable) appelée lors de la suppression d’une variable. L’instance de la classe Variable supprimée est passée en paramètre.

- ajcaracteristique(Caracteristique $caracteristique) appelée lors de l’ajout d’une nouvelle caracteristique.
- modcaracteristique(Caracteristique $caracteristique) appelée lors de la modification d’une caracteristique.
- suppcaracteristique(Caracteristique $caracteristique) appelée lors de la suppression d’une caracteristique.
- ajcaracdisp(Caracdisp $caracdisp) appelée lors de l’enregistrement d’une nouvelle caracdisp.
- modcaracdisp(Caracdisp $caracdisp) appelée lors de la modification d’une caracdisp.
- suppcaracdisp(Caracdisp $caracdisp) appelée lors de la suppression d’une caracdisp.

- ajcaracteristique(Declinaison $declinaison) appelée lors de l’ajout d’une nouvelle déclinaison.
- modcaracteristique(Declinaison $declinaison) appelée lors de la modification d’une declinaison.
- suppcaracteristique(Declinaison $declinaison) appelée lors de la suppression d’une declinaison.
- ajcaracdisp(Declidisp $declidisp) appelée lors de l’enregistrement d’une nouvelle declidisp.
- modcaracdisp(Declidisp $declidisp) appelée lors de la modification d’une declidisp.
- suppcaracdisp(Declidisp $declidisp) appelée lors de la suppression d’une declidisp.

- ajoutdevise(Devise $devise) appelée lors de l’enregistrement d’une nouvelle devise.
- moddevise(Devise $devise) appelée lors de la modification d’une devise.
- suppdevise(Devise $devise) appelée lors de la suppression d’une devise.

- ajoutclient(Client $client) appelée lors de la création d’un client.
- modcli(Client $client) appelée lors de la modification d’un client.
- supcli(Client $client) appelée lors de la suppression d’un client.

- aprescommande(Commande $commande) appelée lors de la création d’une commande.
- statut(Commande $commande, $ancienStatut) appelée lors du changement de statut d’un commande. Sont passés en paramètre la commande concernée ainsi que le code de l’ancien statut (le nouveau statut est dans l’instance de la classe Commande). Il n’y a pas de suppression de commande, elles passent simplement au statut annulé. Vous pouvez retrouver cette liste de points d’entrée sur le wiki

Grâce à tous ces points d’entrées vous allez pouvoir intéragir avec le back-office de Thelia de manière simple.

N’oubliez pas, en cas de soucis vous pouvez toujours vous aidez du plugin sur GitHub, enrichi à chaque partie du tuto : https://github.com/thelia/commentaire

tags : trucs et astuces


Ajouter un commentaire

Ce forum est modéré à priori : votre contribution n'apparaîtra qu'après avoir été validée par un administrateur du site.

Le forum
Thelia

Aller au forum

Les réseaux
sociaux

Google+

Nos
partenaires



Contactez
Thelia


Pour toutes questions concernant Thelia, vous pouvez nous contacter :

contacter Thelia par téléphone par téléphone au 04 44 05 31 00

Contacter Thelia e-maiol par mail à l'adresse info@thelia.net

April Oséo FEDER