Routing.yml y links.[menu|action|action|contextual].yml

Cuando estamos implementando un módulo personalizado de Drupal tenemos que lidiar con algunos ficheros en formato YAML. Estos tienen ciertos cometidos bastantes confusos para los newbies, así que voy a poner un poco de orden y aclaración. Los ficheros son:

  • mimodulo.routing.yml
    • Define las URL y controladores que van a gestionar una página*.
  • mimodulo.links.menu.yml
    • Inserta en las barra de menús accesos a funciones de nuestro módulo, páginas externas, …
  • mimodulo.links.task.yml
    • Inserta en las pestañas (tabs) accesos a funciones de nuestro módulo.
  • mimodulo.links.action.yml
    • Inserta botones con acceso a las funciones de nuestro módulo.
  • mibloque.links.contextual.yml
    • Crea menú contextuales en los bloques.
Continuar leyendo «Routing.yml y links.[menu|action|action|contextual].yml»

Gestión de rutas según PHP

Este post surge de la necesidad de resolver una «pantalla blanca de la muerte» que me apareció con Drupal. Cuando pude ver de dónde venía el error, y tras días, sí, días de consultas descubrí que el problema no era yo, eras tú, pedazo de… perdón, me he desviado del tema y me vino a la cabeza un recuerdo negativo del pasado. ¡Qué jodida es la traición y la mentira, eh! jeje.

Continuar leyendo «Gestión de rutas según PHP»

The website encountered an unexpected error. Please try again later

¡Mierda, qué he hecho para que todo se me haya jodido! Pues todo y nada. La verdad que al igual que sucedía con la «pantalla azul de la muerte» de Microsoft Windows, en Drupal tenemos su homónimo, pero con pantalla en blanco y con el título de este post.

Aquí voy a explicar cómo obtener más información y qué fue lo que me sucedió.

Continuar leyendo «The website encountered an unexpected error. Please try again later»

MYSQL_ATTR_SSL_CA

Si estamos trabajando con Drupal y, en particular, con Drush, puede que nos encontremos con un error, muy incómodo, que viene a indicarnos que hay un problema con MySQL.

Realmente lo que está ocurriendo es que en la instancia de PHP que estamos utilizando para el funcionamiento de Drush, no tiene cargado el módulo pdo_mysql. Esto se habilita en el fichero php.ini.

Custom Entities y cómo asignar un tipo de widget en setDisplayOptions

Cuando estamos definiendo una entidad personalizada nos encontramos con que, en el método baseFieldDefinitions, tenemos que definir el cuerpo (campos) que compone la entidad. He tratado de buscar en la documentación el listado de los tipos, que fácilmente podemos seleccionar desde la UI, pero a nivel de código, yo al menos, era incapaz de localizarlo entre las miles de páginas que componen la API de Drupal. Como siempre hago en mis posts, no cuento mis penas sino mis soluciones.

Este código ha sido probado y verificado para Drupal 9.1.0.

Continuar leyendo «Custom Entities y cómo asignar un tipo de widget en setDisplayOptions»

The ‘entity:user’ context is required and not present

Así, con este título tan directo, quiero destacar el error que he tenido que lidiar y me ha puesto los pelos de punta. ¡Qué carajos ha pasado para que ni siquiera el usuario «anoymous» pueda ver la web!

Pues señores, horas antes, de sobre enterado borré, de la tabla users, el registro del usuario con uid=0. No me preguntes porqué, pero lo hice.

Solución, insertar un nuevo registro para ese usuario. ¿Qué datos meto? Pues estos mismos.

INSERT INTO users (uid, uuid, langcode) VALUES ('0', '2d62a7d8-b5b6-43b2-b513-fa7b3396ec44', 'es');