Cómo crear una extensión Hello World en Magento 2
Publicado: 2017-04-25Vamos a construir una extensión muy simple en Magento 2. Cuando termine, la salida de la extensión dirá "Hola Weblizar, ¡Esta es su primera extensión de Magento de hola mundo! ” en el contenido del bloque en una ruta de interfaz personalizada. Aprendamos cómo crear una extensión en magento 2 con hello world como salida.
Requisito:
En la lista, tiene la última versión de Magento 2, que actualmente es 2.1. Está instalado en su sistema local.
Antes de comenzar el desarrollo de una extensión de Magento 2, hay dos cosas que la gente suele olvidar y que le recomendamos que haga:
1. Deshabilitar el caché de Magento
Deshabilitar el caché de Magento durante el desarrollo le ahorrará algo de tiempo porque no necesitará vaciar manualmente el caché cada vez que realice cambios en su código.
La forma más fácil de deshabilitar el caché es ir a Admin => Sistema => Administración de caché => seleccionar todos los tipos de caché y deshabilitarlos.
2. Pon Magento en modo desarrollador
Debe poner Magento en modo desarrollador para asegurarse de ver todos los errores que Magento le está arrojando.
Para hacer esto, abra su terminal y vaya a la raíz de Magento 2. Desde allí debes ejecutar el siguiente comando:
php bin/magento deployment:mode:set desarrollador
Cómo crear una extensión en Magento:
Creando los archivos y carpetas de extensión:
Configuración de extensión
El primer paso es crear la carpeta de la extensión y los archivos necesarios para registrar una extensión de Magento.
1. Cree las siguientes carpetas:
- app/código/Weblizar
- app/código/Weblizar/Holamundo
La carpeta Weblizar es el espacio de nombres de la extensión y Helloworld es el nombre de la extensión.
Nota: si no tiene la carpeta de códigos en el directorio de su aplicación, créela manualmente.
2. Ahora que tenemos una carpeta de extensión, necesitamos crear un archivo module.XML en la carpeta app/code/Weblizar/Helloworld/etc con el siguiente código:
<?versión xml=”1.0″?>
<config xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:noNamespaceSchemaLocation=”urn:magento:framework:Module/etc/module.xsd”>
<nombre del módulo=”Weblizar_Helloworld” setup_version=”1.0.0″></módulo>
</config>
3. Para registrar el módulo, cree un archivo registration.php en la carpeta app/code/Weblizar/Helloworld con el siguiente código:
<?php
\Magento\Framework\Component\ComponentRegistrar::registrar(
\Magento\Framework\Component\ComponentRegistrar::MÓDULO,
'Weblizar_Holamundo',
__DIR__
); ?>
4. Abra su terminal y vaya a la raíz de Magento 2. Ejecute desde allí el siguiente comando:
Configuración de php bin/magento: actualizar
Si desea asegurarse de que la extensión esté instalada, puede ir a Admin => Tiendas => Configuración => Avanzado => Avanzado y verificar que la extensión esté presente en la lista o puede abrir app/etc/config.php y verifique la matriz para la clave 'Weblizar_Helloworld', cuyo valor debe establecerse en 1.
Creando un controlador
1. Primero necesitamos definir el enrutador. Para ello crea un archivo route.XML en la carpeta app/code/Weblizar/Helloworld/etc/frontend con el siguiente código:
<?versión xml=”1.0″?>
<config xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:noNamespaceSchemaLocation=”urn:magento:framework:App/etc/routes.xsd”>
<id del enrutador=”estándar”>
<id de ruta=”holamundo” frontName=”holamundo”>
<nombre del módulo=”Weblizar_Helloworld” />
</ruta>
</enrutador>
</config>
Aquí estamos definiendo nuestro enrutador frontend y la ruta con una identificación "helloworld".
El atributo frontName será la primera parte de nuestra URL.
En Magento 2, las URL se construyen de esta manera:
<frontName>/<controler_folder_name>/<controller_class_name>
Entonces, en nuestro ejemplo, la URL final se verá así:
hola mundo/índice/índice
2. Ahora creamos el archivo del controlador Index.php en la carpeta app/code/Weblizar/Helloworld/Controller/Index con el siguiente código:
<?php
espacio de nombres Weblizar\Helloworld\Controller\Index;
use Magento\Framework\App\Action\Context;
El índice de clase se extiende \Magento\Framework\App\Action\Action
{
protegido $_resultPageFactory;función pública __construct(Contexto $contexto, \Magento\Framework\View\Result\PageFactory $resultPageFactory)
{
$this->_resultPageFactory = $resultPageFactory;
padre::__construcción($contexto);
}función pública ejecutar ()
{
$resultPage = $this->_resultPageFactory->create();
devuelve $página de resultados;
}
}
En Magento 2 cada acción tiene su propia clase que implementa el método execute().
Creando un bloque
Crearemos una clase de bloque simple con el método getHelloWorldTxt() que devuelve la cadena "Hola mundo".
1. Crea un archivo Helloworld.php en la carpeta app/code/Weblizar/Helloworld/Block con el siguiente código:
<?php
espacio de nombres Weblizar\Helloworld\Block;clase Helloworld extiende \Magento\Framework\View\Element\Template
{
función pública getHelloWorldTxt()
{
return 'Hola Weblizar, ¡Esta es tu primera extensión magento de hola mundo!';
}
}
Crear un diseño y archivos de plantilla
En Magento 2, los archivos de diseño y las plantillas se colocan en la carpeta de vista dentro de su extensión. Dentro de la carpeta de vista, podemos tener tres subcarpetas: adminhtml, base y frontend.
La carpeta adminhtml se usa para admin, la carpeta frontend se usa para frontend y la carpeta base se usa para los archivos admin y frontend.
1. Primero, crearemos un archivo helloworld_index_index.XML en la carpeta app/code/Weblizar/Helloworld/view/frontend/layout con el siguiente código:
<página xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:noNamespaceSchemaLocation=”../../../../../../../lib /interno/Magento/Framework/
Ver/Diseño/etc/page_configuration.xsd” diseño=”1columna”>
<cuerpo>
<nombre del contenedor de referencia=”contenido”>
<block class=”Weblizar\Helloworld\Block\Helloworld” name=”helloworld” template=”helloworld.phtml” />
</contenedor de referencia>
</cuerpo>
</página>
Cada página tiene una mano de diseño y para nuestra acción de controlador, el controlador de diseño es helloworld_index_index. Puede crear un archivo de configuración de diseño para cada identificador de diseño.
En nuestro archivo de diseño, agregamos un bloque al contenedor de contenido y configuramos la plantilla de nuestro bloque en helloworld.phtml, que crearemos en el siguiente paso.
2. Cree un archivo helloworld.phtml en la carpeta app/code/Weblizar/Helloworld/view/frontend/templates con el siguiente código:
<h1><?php echo $esto->getHelloWorldTxt(); ?></h1>
$esta variable hace referencia a nuestra clase de bloque y llamamos al método getHelloWorldTxt() que devuelve la cadena '¡Hola mundo!'.
Y eso es. Abra la URL /helloworld/index/index en su navegador y debería obtener algo como esto y
Haga clic aquí para descargar la extensión hello world magento