Crear una ruta con parámetros en Drupal 8

Hoy vamos a empezar con una pequeña serie sobre pequeños tutoriales en Drupal 8, serán básicos, mas que nada para orientar sobre como comenzar a desarrollar con Drupal 8 si estamos un poco perdidos. Es recomendable ademas, tener instalado DrupalConsole, ya que vamos a trabajar con ella para algunas cosas, podeis mirar como instalarlo desde este enlace.

 

Trabajaremos con rutas, controladores, servicios y eventos principalmente, pero tambien tocaremos algo sobre bloques, formularios y plantillas; si venimos de Symfony, nos sonara familiar, de modo que es una ventaja (y seria recomendable) tener unos conocimientos mínimos de Symfony. No nos vamos a liar mas con explicaciones, y vamos a lo que interesa, el codigo!

 

En este primer capitulo, vamos a hacer algo simple, crear un modulo, una ruta, pasarle parametros y mostrarlos por pantalla, algo muy simple, pero nos servira para hacernos una pequeña idea de como utilizar las rutas, parametros y el controlador.

 

Crear el modulo

 

Primero vamos a crear el modulo, a si que vamos a la carpeta /modules y creamos otra llamada “custom”, y dentro otra que se llame “drupaleros” de modo que nos quede la siguiente ruta /modules/custom/drupaleros. La carpeta “drupaleros” es la carpeta raíz del modulo que vamos a desarrollar, la podemos crear dentro de la carpeta modules, pero es recomendable crearla dentro de “custom” para tener los módulos organizados, y cuando instalemos modulos propios de la comunidad de Drupal guardarlos en una carpeta llamada “contrib”.

 

Con la carpeta creada, añadimos el archivo drupaleros.info.yml, este archivo es el equivalente a los .info de Drupal 7, solo que ahora se utiliza yaml. Dentro del archivo añadimos lo siguiente:

 

name: drupaleros

type: module

description: Modulo usado para las Rutas en Drupaleros

core: 8.x

package: Custom

 

Ahora ya podemos irnos a nuestro Drupal, y nos aparecerá el modulo listo para activar.

 

 

Una vez activado el modulo, no notaremos nada extraño, ya que de momento no hace nada, únicamente le hemos dicho a Drupal que hemos creado un modulo, pero este no hace nada. Ahora vamos a crear la ruta y a continuación el controlador.

 

Crear la ruta y el controlador

 

Creamos el archivo drupaleros.routing.yml y dentro añadimos el siguiente codigo:

 

drupal_say:

  path: /drupal/say

  defaults:

    _controller: \Drupal\drupaleros\Controller\DrupalerosController::say

  requirements:

    _permission: 'access content'

 

Ahora ya tenemos la ruta definida, el nombre de la ruta es “drupal_say”, este nombre debe ser único, ya que identifica nuestra ruta, la ruta es “/drupal/say”. Donde le indicamos cual va a ser el controlador tenemos que indicarle el namespace del controlador y el método al que llamaremos dentro del controlador. Y al final especificamos los requisitos para poder acceder a la ruta, en este caso necesitamos poder acceder a visualizar el contenido.

 

Lo único que nos queda es crear el controlador, para ello cremos la carpeta src y dentro otra llamado “Controller”, y finalmente creamos el archivo DrupalerosController.php con el siguiente codigo:

 

<?php


namespace Drupal\drupaleros\Controller;


use Symfony\Component\HttpFoundation\Response;


class DrupalerosController

{

public function say()
{

return new Response('Drupaleros');

}

}

 

Y listo ya lo tenemos todo listo, el modulo activo, la ruta definida y el controlador. Si ahora vamos a la ruta /drupal/say seguramente nos aparezca un aviso de que la pagina no existe, nos queda limpiar las cache de las rutas, para ello vamos a utilizar DrupalConsole.

 

$ drupal route:rebuild

 

Ya podremos acceder a la ruta y ver que nos imprime el mensaje “Drupaleros” sin ningun tipo de formato, esto es debido que hemos devuelto un objeto Response con un texto, en el futuro veremos como solucionar esto.

Páginas

Total de votos: 54

Entradas relacionadas

Comentarios (1)

  • Imagen de Luis

    Luis (no verificado)

    Hola, una duda aparte del post, ¿Como haria para meterle lightbox a imagenes que estan dentro del body(drupal8 con ckeditor)?

  • Páginas

Deja un comentario