Introducción a las rutas y controladores en Durpal 8

Imagen

Esta ser una rápida introducción, veremos que son las rutas, y como crear una pagina con un controlador. Si alguna vez hemos usado Symfony, nos resultaran familiares, ya que están basadas en las de Symfony, y pueden hacer todo lo que Symfony puede hacer (y más).

Las rutas en el archivo routing.yml

Para definir una ruta, debemos hacerlo en el archivo routing.yml de nuestro modulo, por ejemplo, si el modulo se llama “nuestro_modulo”, pues el archivo debe llamarse “nuestro_modulo.routing.yml” y estar ubicado al mismo nivel, que el archivo info.yml. Esto hace sencillo localizar las rutas que definen los módulos, ya que siempre estarán en el mismo lugar.

Veamos un ejemplo:

nireneko.view:
  path: '/nireneko' 
  defaults: 
    _controller: '\Drupal\nireneko\Controller\NirenekoController::view' 
    _title: 'Hola Mundo'
  requirements: 
    _permission: 'access content'

Lo que vemos arriba, es una ruta que se definiría en el archivo routing.yml, veámosla por partes.

Primero esta indicado el nombre de la ruta que es “nireneko.view”, podemos indicarle el nombre que deseemos, pero nunca contener números, siempre letras, signo de puntuación o la barra baja “_”.

A continuación, tenemos “path”, el cual indica cual será la URI de esta ruta, en este caso es “/nireneko”, de modo que si en el navegador ponemos “dominio.com/nireneko”, estaremos accediendo a esta ruta.

Dentro de “defaults”, vemos 2 opciones, “_controller” y “_title”, el primero, indica a que controlador se llamara, debemos crear uno e indicar el namespace y el método al que se llamara, el método se indica poniendo “::” después del namespace, de modo que namespace es “\Drupal\nireneko\Controller\NirenekoController” y el método al que se llamara es “view”. “_title” indica el título de la página que se verá.

Para finalizar, tenemos “requirements”, que indica los permisos de acceso a esta ruta, en este ejemplo, indicamos “_permissions” y “access content”, esto quiere decir, que el usuario necesitara el permiso “access content” para poder ver el contenido de esta ruta.

Creando la página en el controlador

En este ejemplo, dentro de “defaults” hemos indicado “_controller”, esto quiere decir, que Drupal va a buscar un controlador que coincida con el namespace indicado, dentro de la carpeta “/src/Controller” de nuestro modulo, el controlador deberá tener el nombre “NirenekoController.php” de modo que nos quedaría algo asi: “modules/nireneko/src/Controller/NirenekoController.php”.

Dentro de la clase php que actuara de controlador, debemos extender de la clase “ControllerBase” e implementar el método “view” al que se llamara, en este ejemplo vamos a devolver un array renderizable con el texto “¡Hola mundo!”.

namespace Drupal\nireneko\Controller;

use Drupal\Core\Controller\ControllerBase;

/**
 * Controlador de ejemplo.
 */
class NirenekoController extends ControllerBase {

  /**
   * Devuelve un array renderizable.
   */
  public function view() {
    return [
      '#markup' => $this->t('¡Hola mundo!'),
    ];
  }

}

Ahora que tenemos la ruta y el controlador, si accedemos a dominio.com/nireneko, accederemos a una pagina con el titulo “Hola Mundo” y el texto “¡Hola mundo!”.

 

Archivo

Artículos relacionados: