Teniendo en cuenta la cantidad de marcos de comercio electrónico disponibles en el mercado, Magento es una de las opciones más populares para las tiendas web de mediana a gran escala. Tanto su conjunto de características como su arquitectura ayudan a diferenciarlo de muchas de las otras opciones disponibles en la actualidad..
Aunque hay muchas extensiones de terceros para Magento disponibles, también es fácil desarrollar las suyas. El propósito de este tutorial no es ver cómo crear una extensión personalizada; sin embargo, supone que estás familiarizado con el proceso ya que usaremos un patrón de diseño para implementar nuestro propio módulo personalizado.
Específicamente, veremos el patrón de observador de eventos. Para aquellos que no están familiarizados, los observadores se registran para esperar un evento y poder ejecutar el código cada vez que se dispara un evento..
Como se mencionó, este tutorial asume que está familiarizado con cómo desarrollar módulos personalizados dentro de Magento, porque vamos a crear un módulo personalizado que emplea ese patrón de diseño.
Primero, debemos declarar al observador de nuestro evento personalizado. Para hacer esto, ingrese el siguiente código en el archivo config.xml de su módulo justo dentro del elemento global.
Te explicamos el código momentáneamente..
... ... semifallo nombre de modulo / observador my_custom_method
En el código anterior, acabamos de declarar al observador del evento denominado my_custom_event
. Esto simplemente significa que siempre que my_custom_event
se enciende, verá que el observador de este evento se registra en su módulo y luego ejecuta el código asociado con el evento.
En nuestro caso, llamará al método. my_custom_method
definido en la clase Namespace_Modulename_Model_Observer
.
Ahora, vamos a llevar esto un paso más allá. Note que en el
etiqueta, puede definir los eventos para los cuales le gustaría registrar a los observadores. En nuestro caso, hemos registrado al observador del evento.
. También puede definir múltiples observadores para el mismo evento. En ese caso, declare a todos sus observadores dentro del
etiqueta.
A continuación, cada observador se envuelve con un identificador único. En nuestro ejemplo, es
. Además, debe especificar el nombre de la clase y el nombre del método que se ejecutará. los
etiqueta especifica la ubicación de la clase según la convención de Magento.
En nuestro ejemplo, será Observer.php
bajo la modelo
directorio de Nombre del módulo
módulo. El nombre del método es declarado por el
etiqueta. El valor de la
la etiqueta es "singleton", lo que significa que usará la misma instancia del objeto observador para cada llamada de evento.
Ahora, después de declarar nuestro observador, vamos a crear la clase de observador y el código del método relacionado. Crear un archivo Observer.php
bajo la Modelo
Directorio de su módulo. Copia y pega el siguiente código en ese archivo.
getEvent (); // método getter para obtener el valor cid pasado desde el despachador $ cid = $ event-> getCid (); echo $ cid; salida; ?>
Aquí, acabamos de crear la clase observadora. En el my_custom_method
En este método, tendrá acceso al objeto observador y los datos pasados junto con él desde el despachador para que pueda usarlo para hacer algo significativo..
En este ejemplo, acabamos de recuperar el valor de cid
variable pasada desde el código del despachador que veremos en un momento.
Por supuesto, necesitas modificar el Nombre del módulo
y espacio de nombres
De acuerdo con su módulo personalizado en el archivo de clase y declaración XML.
Como hemos declarado el observador en el módulo personalizado, lo único que queda es enviar nuestro evento personalizado.
Veamos cómo puedes usar el despachador de eventos de Magento desde tu módulo personalizado. Escriba el siguiente código en el método de su controlador desde donde le gustaría enviar el evento. Dicho esto, también puede disparar el evento desde otros lugares aparte del controlador.
'123'); Mage :: dispatchEvent ('my_custom_event', $ event_data_array);…?>
Como puede ver, es bastante sencillo enviarEl evento desde casi cualquier lugar en Magento. El primer argumento de la dispatchEvent
método es el nombre del evento y el segundo argumento se utiliza para pasar los datos a los observadores.
Como puede haber notado anteriormente en la clase de observador, hemos utilizado el método getter para acceder al valor de variable cid
.
En la mayoría de los casos, los datos de eventos pasados a los observadores están en modo de solo lectura. Más específicamente, los observadores no pueden cambiar el valor de las variables pasadas por el método del despachador de eventos.
Suponga que ha distribuido un evento personalizado en su módulo y desea que los observadores puedan modificar los datos del evento original pasados. Vamos a revisar el código del despachador para lograr esto.
'123'); $ varien_object = new Varien_Object ($ event_data_array); Mage :: dispatchEvent ('my_custom_event', array ('varien_obj' => $ varien_object)); // debería mostrar '456' ya que cambiaremos el valor en el observador echo $ varien_object-> getCid ();…?>
Acabamos de utilizar el objeto especial de Magento. Varien_Object
y pasamos nuestros datos usando eso para asegurarnos de que se conserva cualquier modificación a los datos.
También deberá cambiar el código de la clase de observador en consecuencia. Aquí está la clase observada modificada.
getEvent (); // método getter para obtener el objeto varien pasado desde el dispatcher $ varien_object = $ event-> getVarienObj (); $ varien_object-> setCid ('456'); ?>
El único cambio importante en el código es buscar el Varien
objeto y el uso de eso para cambiar el valor de la variable de matriz cid
.
Aunque este es un tutorial relativamente simple, muestra cómo podemos implementar fácilmente el Patrón de Observador de Eventos en el contexto de un módulo personalizado de Magento. En este punto, debe estar familiarizado con la creación de sus propios módulos personalizados utilizando el patrón de Observador de eventos.
Por favor no dude en dejar preguntas y / o comentarios en el siguiente formulario!