
Drupal 8: Nuestro primer módulo
Autor: fjavimartin
Fecha de Creación: 21/03/2017
Categorías:
En este artículo descubriremos los pasos a seguir para crear nuestro primer módulo en drupal 8 que nos devolverá el ya conocido “Hola Mundo”.
1. Creación del directorio para nuestro módulo
La estructura de directorios en drupal 8 ha cambiado, pero tampoco demasiado. Ahora tendremos dentro del directorio raíz de nuestra instalación un “modules” que nos da muchas pistas sobre su cometido final.
Dentro de este directorio podremos dejar las carpetas de nuestro módulos o crear el árbol de directorio que deseemos. Lo más recomendable será crear una carpeta “contrib” donde dejar los módulos contribuidos y una “custom” donde dejaremos nuestros módulos.
Para este ejemplo crearemos una carpeta “d8dev” dentro de “custom”.
2. Creación del .info.yml
Al igual que en versiones anteriores tendremos que crear un fichero de información donde anotar el nombre de nuestro módulo, su versión, versión de core, etc.…., pero en este caso será este fichero tendrá que tener formato yaml.
Yaml es el formato preferido de symfony para los ficheros de configuración y drupal 8 lo ha importado. Entre las cosas con las que tendremos que tener mucho cuidado será con los espacios o saltos de tabulación porque provocará que la configuración no se lea correctamente.
Para nuestro módulo tendremos un fichero d8dev.info.yml de configuración que alojaremos en la raíz del directorio que hemos creado en el anterior apartado y tendrá el siguiente contenido:
name: Drupal 8 Hola Mundo
type: module
description: 'Drupal 8 - Hola Mundo.'
package: Custom
version: 8.1
core: 8.x
Ya veis que es bastante legible:
- Name/Description: Fijaremos nombre/descripción para nuestro módulo. Estos serán los textos que veremos al realizar la instalación de nuestro módulo.
- Type: Informaremos del tipo de paquete que estamos instalando. Puede ser un módulo, theme o un perfil de instalación.
- Package: Nos permitirá mostrar nuestro módulo agrupado dentro de uno de los paquetes que tengamos al realizar la instalación o podemos crear uno propio.
- Version/Core: Nos permitirá informar la versión de nuestro módulo y la versión mínima de core que necesitamos para que funcione correctamente.
Para el caso en el drupal tuviera que tener en cuenta alguna dependencia con otro módulo tendríamos que informar el parámetro dependencies y anotar el identificador de los módulos con los que tuviéramos dependencias.
3. Rutas para nuestro módulo
El siguiente paso será definir las rutas a las que responderá nuestro módulo. Para el caso en el que drupal no tenga definida la ruta que estamos solicitando devolverá un error 404.
Para nuestro pequeño módulo necesitaremos definir la ruta sobre la que recaerán las solicitudes mediante el fichero d8dev.routing.yml:
d8dev.mypage:
path: '/mypage/page'
defaults:
_controller: '\Drupal\d8dev\Controller\d8devController::myPage'
_title: 'Hola mundo en Drupal 8'
requirements:
_permission: 'access content'
En este punto estaremos definiendo el path al que responderá nuestra aplicación junto a la clase controlador que atenderá las solicitudes y el método que se ejecutará. El único requisito que tendrán que cumplir los usuarios para disfrutar de nuestro magnífico “Hola Mundo” será tener acceso al contenido.
4. Código de nuestro controlador
El controlador será una función PHP que recibirá la información que llega desde la petición HTTP y construye una respuesta a esa petición.
Dicho lo anterior el último elemento que necesitamos es una pequeña clase con un método previamente declarado en el fichero routing.yml. Nuestro fichero d8devController.php ser alojará en el directorio ‘src/Controller/d8devController.php’:
<?php
namespace Drupal\d8dev\Controller;
class d8devController {
public function myPage() {
$element = array(
'#type' => 'markup',
'#markup' => 'Hola Mundo!!'
);
return $element;
}
}
?>
El método myPage() devolverá un elemento de formulario que contendrá nuestro deseado mensaje “Hola Mundo”.
Fuentes
https://www.drupal.org/docs/8/api/routing-system/routing-system-overview