Stockage de configuration du module
Introduction
Dans la troisième partie de cette série, nous allons voir comment nous pouvons stocker des données de configuration de nos modules dans la base de Prestashop, et comment nous pouvons permettre aux utilisateurs d'interagir avec ces données pour contrôler le comportement du module. Nous allons aussi brièvement comment nous pouvons générer une sortie de notre module de fournir une rétroaction visuelle de la configuration change.
Gestion des paramètres utilisateur
Nous allons appeler ce module "TutorialSecond" si nous avons de nouveau besoin de créer un nouveau répertoire module et fichier de classe - qui sera nommé "tutorialsecond" et "tutorialsecond.php" respectivement. Le fichier de classe (tutorialsecond.php) doit contenir les éléments suivants:
<? Php
classe Tutorialsecond s'étend Module
(
''Privé _html $ =;
function __construct ()
(
$ This-> nom = 'tutorialsecond;
parent:: __construct ();
$ This-> onglet = 'Tutoriels eCartService.net;
$ This-> version = '0 .1,0 ';
$ This-> displayName = $ l this-> ('Second Tutorial module');
$ This-> description = $ l this-> («Notre second module - Un" Bonjour tout le monde "redux");
)
getContent fonction publique ()
(
)
_displayForm private function ()
(
)
)
/ / Fin de: tutorialsecond.php Vous remarquerez que nous avons mis en place deux nouvelles fonctions membre: getContent () et:: _displayForm (). Si vous téléchargez le fichier sur votre serveur et installer ce module à ce stade, vous devriez voir une nouvelle option sur la liste des modules d'écran pour «Deuxième Tutorial Module". Il y aura désormais un ">> Configurer» dans le module d'entrée, mais il sera simplement en cliquant retourner un vide Back Office page. La présence de l':: getContent () fonction membre est responsable de ce qu'il assure l'interface entre notre module et le Back Office.
En plus de ces deux nouvelles fonctions, nous avons également ajouté la variable membre $ _html privé, qui nous servira plus tard dans cet article de construire la puissance requise pour l'affichage dans le back office.
Stockage et récupération des données de configuration
Prestashop propose un "Configuration" de classe qui offre des fonctions de plusieurs membres de manipuler les données de configuration, mais les deux principales fonctions qui seront les plus couramment utilisés sont les suivants:
Configuration:: updateValue ($ key, $ valeurs, $ html = false);
Configuration:: get ($ key, $ id_lang = NULL);
La configuration:: updateValue () la fonction nous permet de stocker une option de configuration dans la base de données (éventuellement en plusieurs langues dans ce cas, le paramètre $ valeurs sera un tableau) et de la configuration:: get () nous permet de récupérer les données de configuration pour une langue par défaut sélectionnée ou le magasin. Nous allons ignorer les paramètres qui ont des valeurs par défaut pour le moment, mais reviendra sur le paramètre $ html dans la configuration:: updateValue () dans le prochain article, quand on regarde l'objet d'une validation de formulaire.
Mettre en œuvre le configurer l'écran
Dans notre fichier source nous avons créé un _displayForm député function (). Ceci est tout à fait facultative que tout le code d'interface pourrait être placé dans le getContent () fonction membre, mais il est fortement recommandé que vous vous séparez de ce à un souci de faciliter la maintenance du code. Nous allons créer un simple formulaire dans cette fonction à partir avec laquelle nous pouvons recueillir les commentaires propriétaire du magasin.
_displayForm private function ()
(
$ This-> _html .= '
<form method="post"> action="'.$_SERVER['REQUEST_URI'].'"
<label>. $ this-> l ('Message à la').'</ monde label>
class="margin-form"> <div
<input type="text" name="our_message" />
</ Div>
<input type="submit" name="submit" value="'.$this-> l ('Mettre à jour').'" class = "bouton" />
</ Form> ';
) Vous pouvez voir que le:: _displayForm () ajoute simplement la fonction standard de code de formulaire html à notre variable membre $ _html, avec l'objectif de formulaire, $ _SERVER ['REQUEST_URI']. Prestashop's Back Office architecture Cet itinéraire à notre:: fonction membre getContent classe pour nous de gérer lorsque le formulaire est affiché.
Nous avons ensuite besoin d'ajouter du code à notre:: getContent () pour effectivement afficher le formulaire et de traiter l'envoi du formulaire.
getContent fonction publique ()
(
if (Outils:: isSubmit ('submit'))
(
Configuration:: updateValue ($ this-> nom. _message, Outils:: getValue ('our_message'));
)
$ This-> _displayForm ();
return $ this-> _html;
) Le:: getContent () utilise d'abord une autre classe Prestashop "Outils" pour vérifier si nous nous occupons de l'action post du formulaire, ou si cette fonction est appelée dans une autre voie à savoir un clic sur "Configuration" dans le module de liste - le paramètre est le nom que nous a donné à notre bouton "Actualiser" dans le formulaire.
Si la fonction est appelée directement par le back office (dans lequel cas Outils:: isSubmit ('submit') retourne FALSE), alors que nous appelons la forme fonction de rendu, nous avons créé ci-dessus et retourne le résultat, capturés dans le $ this- > variable _html, pour le Back Office pour l'affichage.
Si la fonction est appelée à la suite de notre formulaire d'être affecté, alors nous pouvons stocker nos paramètres de configuration dans la base de données avec la valeur inscrite sur notre formulaire. Nous avons à nouveau utiliser la classe Outils pour obtenir la valeur de la variable de formulaire en utilisant l'appel à Outils:: getValue ('our_message ») où« our_message »est le nom du champ de saisie dans notre formulaire.
Vous pouvez voir que j'ai ajouté le nom de notre module au début de la configuration nom de l'article - est de veiller à ce que la clé de configuration est unique, car l'espace de noms pour ces clés est partagé pour l'ensemble du magasin.
Une fois que nous avons stocké nos données de configuration sous la forme est de nouveau affiché, prêt pour une plus grande participation, si nécessaire.
Module de sortie sur une page
Nous avons maintenant une méthode de capture d'entrée de la propriétaire du magasin et de l'enregistrer dans la base de données, la prochaine étape logique serait de faire quelque chose avec lui par exemple l'afficher sur une page. Dans la partie 1 de la série, nous avons parlé des «crochets» par rapport aux modules ajoutant des fonctionnalités. Afin d'utiliser ce que nous devons dire que notre module PrestaShop voudrais crochet dans le front office et nous le faire en utilisant la fonction suivante (définie dans la classe de base Module):
$ This-> registerHook ($ hook_name);
Le paramètre $ hook_name se réfère à l'un des différents points que le noyau Prestashop permet aux modules de sortie insérer et / ou le traitement des données, mais pour l'instant nous allons utiliser un en particulier - "colonne de gauche, ce qui nous permet d'ajouter du contenu dans la colonne de gauche de toutes les pages. Afin d'initialiser le crochet il faut ajouter la surcharge suivante nouvelles dans notre propre classe:
Public Function install ()
(
parent:: install ();
if (! $ this-> registerHook («colonne de gauche '))
return false;
)
Cela indique Prestashop pour exécuter notre crochet module quand il est rendu le contenu de la colonne de gauche de toutes les pages. Nous avons ensuite besoin d'ajouter une fonction pour gérer le rappel crochet. La convention a pour nom la fonction que le nom Hook précédé d'un "crochet":
hookLeftColumn fonction publique ()
(
<div retour »class="block"> <h4>. Configuration:: get ($ this-> nom. _message »). »</ H4> </ div> ';
)
Dans notre exemple simple, nous sommes juste emballage de nos paramètres de configuration dans certaines balises HTML standard pour qu'il s'affiche correctement sur notre page.
Si vous avez déjà installé le module, vous devriez maintenant désinstaller puis réinstaller pour s'assurer que le crochet est correctement enregistré avec le noyau Prestashop. Maintenant, vous pouvez entrer une valeur dans l'écran de configuration pour le module - par exemple: «Bonjour tout le monde», et il sera de sortie que le titre d'une case dans la colonne de gauche de votre magasin. Le code complet pour le deuxième exemple devrait ressembler à:
<? Php
classe Tutorialsecond s'étend Module
(
''Privé _html $ =;
function __construct ()
(
$ This-> nom = 'tutorialsecond;
parent:: __construct ();
$ This-> onglet = 'Tutoriels eCartService.net;
$ This-> version = '0 .1,0 ';
$ This-> displayName = $ l this-> ('Second Tutorial module');
$ This-> description = $ l this-> («Notre second module - Un" Bonjour tout le monde "redux");
)
Public Function install ()
(
parent:: install ();
if (! $ this-> registerHook («colonne de gauche '))
return false;
)
getContent fonction publique ()
(
if (Outils:: isSubmit ('submit'))
(
Configuration:: updateValue ($ this-> nom. _message, Outils:: getValue ('our_message'));
)
$ This-> _displayForm ();
return $ this-> _html;
)
_displayForm private function ()
(
$ This-> _html .= '
<form method="post"> action="'.$_SERVER['REQUEST_URI'].'"
<label>. $ this-> l ('Message à la').'</ monde label>
class="margin-form"> <div
<input type="text" name="our_message" />
</ Div>
<input type="submit" name="submit" value="'.$this-> l ('Mettre à jour').'" class = "bouton" />
</ Form> ';
)
hookLeftColumn fonction publique ()
(
<div retour »class="block"> <h4>. Configuration:: get ($ this-> nom. _message »). »</ H4> </ div> ';
)
)
/ / Fin de: tutorialsecond.php Résumé
Dans cet article, nous avons étendu notre premier module d'inclure un formulaire de configuration de base et ont utilisé une fonction de crochet pour afficher la sortie de notre module dans la colonne de gauche de nos pages. Dans la prochaine partie de cette série nous allons chercher à améliorer la facilité de configuration en quelque chose qui pourrait être utilisé dans un module de mise en œuvre réelle. Il s'agira notamment de valider l'entrée d'utilisateur à la forme, pré-remplissage des champs du formulaire, le cas échéant en fonction de la configuration actuelle et l'affichage des erreurs et des avertissements module dans les écrans de Back Office.