Compte tenu du nombre de structures de commerce électronique disponibles sur le marché, Magento est l’un des choix les plus populaires pour les boutiques en ligne de moyenne à grande échelle. Son ensemble de fonctionnalités et son architecture permettent de le différencier de nombreuses autres options disponibles aujourd'hui..
Bien que de nombreuses extensions tierces pour Magento soient disponibles, il est également facile de développer la vôtre. L'objectif de ce didacticiel n'est pas de vous expliquer comment créer une extension personnalisée. Cependant, cela suppose que vous maîtrisez le processus car nous utiliserons un modèle de conception pour implémenter notre propre module personnalisé..
Plus précisément, nous examinerons le modèle Event-Observer. Pour ceux qui ne sont pas familiers, les observateurs s’inscrivent pour attendre un événement afin de pouvoir exécuter le code chaque fois qu’un événement est déclenché..
Comme indiqué précédemment, ce didacticiel suppose que vous maîtrisez le développement de modules personnalisés dans Magento, car nous allons créer un module personnalisé utilisant ce modèle de conception..
Tout d'abord, nous devons déclarer l'observateur pour notre événement personnalisé. Pour ce faire, entrez le code suivant dans le fichier config.xml de votre module, juste à l'intérieur de l'élément global..
Nous allons expliquer le code momentanément.
… … singleton modulename / observateur my_custom_method
Dans le code ci-dessus, nous venons de déclarer l'observateur de l'événement nommé my_custom_event
. Cela signifie simplement que chaque fois que my_custom_event
est déclenché, il verra que l'observateur de cet événement est enregistré dans votre module, puis exécutera le code associé à l'événement.
Dans notre cas, ça va appeler la méthode my_custom_method
défini dans la classe Namespace_Modulename_Model_Observer
.
Maintenant, allons un peu plus loin. Notez que dans le
balise, vous pouvez définir les événements pour lesquels vous souhaitez inscrire les observateurs. Dans notre cas, nous avons enregistré l'observateur pour l'événement
. Vous pouvez également définir plusieurs observateurs pour le même événement. Dans ce cas, déclarez tous vos observateurs à l’intérieur du
étiquette.
Ensuite, chaque observateur est entouré d’un identifiant unique. Dans notre exemple, c'est
. De plus, vous devez spécifier le nom de la classe et le nom de la méthode à exécuter. le
balise spécifie l'emplacement de la classe conformément à la convention Magento.
Dans notre exemple, ce sera Observer.php
sous le modèle
répertoire de nom de module
module. Le nom de la méthode est déclaré par le
étiquette. La valeur de la
la balise est "singleton" ce qui signifie qu'elle utilisera la même instance de l'objet observateur pour chaque appel d'événement.
Maintenant, après avoir déclaré notre observateur, créons la classe de l'observateur et le code de la méthode associée. Créer un fichier Observer.php
sous le Modèle
répertoire de votre module. Copiez et collez le code suivant dans ce fichier.
getEvent (); // méthode getter pour extraire la valeur cid transmise par le répartiteur $ cid = $ event-> getCid (); echo $ cid; sortie; ?>
Ici, nous venons de créer la classe observateur. dans le my_custom_method
méthode, vous aurez accès à l’observateur et aux données transmises par le répartiteur afin que vous puissiez l’utiliser pour faire quelque chose de significatif.
Dans cet exemple, nous venons de chercher la valeur du cid
variable passée du code de répartiteur que nous verrons dans un instant.
Bien sûr, vous devez modifier le nom de module
et espace de noms
selon votre module personnalisé dans le fichier de classe et la déclaration XML.
Comme nous avons déclaré l'observateur dans le module personnalisé, il ne reste plus qu'à envoyer notre événement personnalisé..
Voyons comment utiliser le répartiteur d'événements de Magento à partir de votre module personnalisé. Écrivez le code suivant dans la méthode de votre contrôleur à partir duquel vous souhaitez envoyer l'événement. Ceci dit, vous pouvez également déclencher l’événement à partir d’endroits autres que le contrôleur..
«123»); Mage :: dispatchEvent ('my_custom_event', $ event_data_array);…?>
Comme vous pouvez le constater, l'envoi est assez simplel'événement de presque n'importe où dans Magento. Le premier argument de la dispatchEvent
méthode est le nom de l'événement et le second argument est utilisé pour transmettre les données aux observateurs.
Comme vous l'avez peut-être remarqué plus tôt dans la classe observateur, nous avons utilisé la méthode getter pour accéder à la valeur de variable cid
.
Dans la plupart des cas, les données d'événement transmises aux observateurs sont en mode lecture seule. Plus spécifiquement, les observateurs ne peuvent pas modifier la valeur des variables transmises par la méthode de répartition des événements..
Supposons que vous ayez envoyé un événement personnalisé dans votre module et que vous souhaitiez que les observateurs puissent modifier les données d'événement d'origine transmises. Revisitons le code du répartiteur pour accomplir cela.
«123»); $ varien_object = new Varien_Object ($ event_data_array); Mage :: dispatchEvent ('my_custom_event', array ('varien_obj' => $ varien_object)); // devrait afficher '456' car nous allons changer la valeur dans observer echo $ varien_object-> getCid ();…?>
Nous venons d'utiliser l'objet spécial de Magento Varien_Object
et passé nos données en utilisant cela pour vous assurer que toute modification des données est préservée.
Vous devrez également modifier le code de classe de l'observateur en conséquence. Voici la classe d'observateur modifiée.
getEvent (); // méthode getter pour extraire un objet varien transmis depuis le répartiteur $ varien_object = $ event-> getVarienObj (); $ varien_object-> setCid ('456'); ?>
Le seul changement majeur dans le code récupère le varien
objet et en utilisant cela pour changer la valeur de la variable de tableau cid
.
Bien qu'il s'agisse d'un tutoriel relativement simple, il montre comment nous pouvons facilement implémenter le modèle Event-Observer dans le contexte d'un module personnalisé Magento. À ce stade, vous devez être familiarisé avec la création de vos propres modules personnalisés à l'aide du modèle Event-Observer..
S'il vous plaît n'hésitez pas à laisser des questions et / ou commentaires dans le formulaire ci-dessous!