Tutorial para la creación de una Extensión de Magento (parte 2)

4 Comments

En esta segunda parte del tutorial se presenta cómo crear un modelo muy básico en el módulo de Magento creado en la primera parte.

Hasta ahora hemos reducido nuestro módulo exclusivamente al controlador, ya que realmente nuestra lógica de negocio es trivial y utilizado como vista una simple impresión en la página. El siguiente paso es colocar la lógica de negocio (aunque sea extremadamente simple) en unmodelo para, finalmente, añadir una vista.

La creación del modelo se hace de forma muy similar a como hemos creado el controlador. En primer lugar, debemos indicar en el fichero de configuración /app/local/Brainsins/Holamundo/etc/config.xml dónde debe Magento buscar los modelos, para ello debemos modificar este fichero como se muestra a continuación:

[sourcecode light=»true»]
/app/code/local/Brainsins/Holamundo/etc/config.xml
[/sourcecode]
[sourcecode language=»xml» highlight=»19,20,21,22,23,24,25″]
<?xml version="1.0"?>
<config>
<modules>
<Brainsins_Holamundo>
<version>0.1.0</version>
</Brainsins_Holamundo>
</modules>
<frontend>
<routers>
<holamundo>
<use>standard</use>
<args>
<module>Brainsins_Holamundo</module>
<frontName>holamundo</frontName>
</args>
</holamundo>
</routers>
</frontend>
<global>
<models>
<holamundo>
<class&gt;Brainsins_Holamundo_Model&lt;/class>
</holamundo>
</models>
</global>
</config>
[/sourcecode]

Con esto estamos diciendo a Magento, mediante la etiqueta class, que nuestros modelos se encuentran en la ruta /Brainsins/Holamundo/Model. La ruta además empieza por /app, como todos los módulos, y continúa en local/, ya que así se especifica en el archivo de activación.

Nuestra clase que hará de modelo, recordando la relación entre la ruta del fichero y su nombre, se llamará Brainsins_Holamundo_Model_NombreDeLaClase, en nuestro caso la llamaremos Saludador.

[sourcecode light=»true»]
/app/code/local/Brainsins/Holamundo/Model/Saludador.php
[/sourcecode]
[sourcecode language=»php»]
class Brainsins_Holamundo_Model_Saludador extends Mage_Core_Model_Abstract {
public function _construct() {
parent::_construct();
$this->_init(‘holamundo/saludador’);
}

public function construirSaludo($nombre) {
return ‘hola ‘ . $nombre . ‘!’;
}
}
[/sourcecode]

En este tutorial simplemente dotaremos al modelo de funcionalidad, pero no de estado (no se podrán guardar instancias del mismo en la base de datos, esto lo dejaremos para más adelante). Para poder utilizar esta funcionalidad desde cualquier parte de Magento utilizaremos el siguiente código:

[sourcecode light=»true» language=»php»]
Mage::getSingleton(&quot;holamundo/saludador’);
[/sourcecode]

Es hora de aplicar estos cambios a nuestro controlador:

[sourcecode light=»true»]
/app/code/local/Brainsins/Holamundo/controllers/IndexController.php
[/sourcecode]
[sourcecode language=»php» wraplines=»false» highlight=»10, 11, 12″]
<?php
class Brainsins_Holamundo_IndexController extends Mage_Core_Controller_Front_Action {
public function indexAction() {
echo("Hola Mundo!");
}

public function saludarAction() {
$input = $this->getRequest()->getParam("nombre");
$name = $input ? $input : "Desconocido";
$saludador = Mage::getSingleton(‘holamundo/saludador’);
$saludo = $saludador->construirSaludo($name);
echo($saludo);
}
}
[/sourcecode]

Otras partes del tutorial:

Parte 1: Creación de un nuevo módulo con un controlador
 

Referencias

Magento for Developers: Part 1 – Introduction to Magento 
Custom Module with Custom Database Table 

Suscríbete a nuestra newsletter