Snippets

Como imprimir mensajes en Drupal 9

$this->messenger() te permitirá imprimir en pantalla tus mensajes al ejecutar algo de código en tus desarrollos con Drupal 8 o 9

/* Con este ejemplo, al ejecutar el método submitForm en tu formulario personalizado, podrás pasar como parámetro los campos de tu formulario formando parte del mensaje. */

 

/**
 * {@inheritdoc}
*/

public function submitForm(array &$form, FormStateInterface $form_state) {
  $this->messenger()->addStatus($this->t('Su número es @number', ['@number' => $form_state->getValue('numero_telefono')]));}

}

Agregar item sin enlace al menu | No link items menu

Puede que necesites para algún proyecto, añadir en tu menú, opciones sin enlace. En este caso tienes varias opciones disponibles

  1. Añadir por interfaz dentro del valor para el enlace del menú (Drupal 8), lo siguiente:
    route:<nolink>
  2. Añadir un item sin enlace al menú programáticamente (Drupal 8), con el siguiente código:
    Link::fromTextAndUrl(t('Title'), Url::fromUri('route:<nolink>'));
  3. Instalar el módulo contribuido Special menu items (Drupal 8 y superiores)
  4. Instalar el módulo contribuido Menu no link (Drupal 7)

Symfony, An exception has been thrown during the rendering of a template

An exception has been thrown during the rendering of a template
("Could not find the entrypoints file from Webpack: the file "./public/build/entrypoints.json" does not exist.")

Durante la instalación de un proyecto de Symfony, es posible que nos encontremos con este error cuando intentamos acceder a la plantilla correspondiente al Controller que generamos por defecto con el comando make:controller, para solucionar el fallo tendrás que eliminar el archivo ENCORE ubicado dentro de config/packages. Pero no manualmente, sino ejecutando el comando que está más abajo.

Testeado en la versión Symfony 5.4.6

drupal/graphql 4.4.0 requires drupal/typed_data *

     Cuando realizamos una instalación de la versión 4.4 de Graphql, utilizando composer, es posible que nos econtremos con un error, debido a su dependencia con el módulo typed_data.

drupal/graphql 4.4.0 requires drupal/typed_data * -> found drupal/typed_data[dev-1.x, 1.0.0-alpha1, ..., 1.x-dev (alias of dev-1.x)] but it does not match your minimum-stability.

Apache Service detected with wrong path

     Hoy en día, los usuarios de Windows, hemos estado evolucionando hacia otras maneras de implementar nuestros entornos de desarrollo, así que es posible, que si intentas instalarte un XAMPP, no puedas arrancar el apache y te encuentres con este error:

Apache Service detected with wrong path

     Normalmente irías a la opción config y cambiarías el puerto en el archivo http.conf del apache, y esto debería solucionarte el problema; que generalmente es causado porque tienes el Skype instalado y entra en conflicto con el puerto 80 del Apache, pero en otros casos, se trata de que en algún momento tuviste instalado Apache2.4 directamente en tu disco C y modificaste el path desde la ventana de Services.

     Así que para solucionarlo, sigue los siguientes pasos:

The metadata storage is not up to date, please run the sync-metadata-storage command to fix this issue

A partir de la versión 5 de Symfony, cuando utilizamos el motor de base de datos con MariaDB, nos encontraremos con un error de actualización de datos, generalemente después de ejecutar los comandos para generar las entidades (console make:entity / console doctrine:migrations:migrate). Para corregir el error sigue los siguientes pasos.

Cómo habilitar la ejecución de scripts para Powershell

Si estás intentando ejecutar por primera vez algún script usando tu consola PowerShell en Windos, te encontrarás con un error parecido a este:

«No se puede cargar el archivo XXXX.ps1 porque en el sistema está deshabilitada la ejecución de scripts. Vea «get-help about_signing» para obtener más información».

Una vez cambies la configuración siguiendo los pasos que están en las instrucciones, podrás ejecutar código cada vez que lo necesites.

PHPStan and Doctrine: $id is never written, only read

Cuando trabajamos con PhpStand en Symfony, es posible que nos encontremos con una alerta que nos advierte sobre propiedades o campos como el $id, que nunca se han utilizado o leído, pero en realidad, en este caso, el $id, sólo se crea para la interacción entre Symfony y Doctrine, por lo que no hace falta Leerlo ni Usarlo más allá.

Así que para evitar esta alerta, que nos saltará siempre que ejecutemos la revisión con PhpStand, sigue los siguientes pasos:

Symfony 6 User Deprecated: Method

User Deprecated: Method "Symfony\Component\Console\Command\Command::execute()" might add "int" as a native return type declaration in the future. Do the same in child class "App\Command\UpdateInfoCommand" now to avoid errors or add an explicit @return annotation to suppress this message

hook_preprocess_node()

La Preprocess Function sirve para modificar los comportamientos por defecto de Drupal, en este caso vamos a acceder al formulario por defecto y lo haremos disponible para colocarlo dentro de un nodo y posteriormente dentro de un paragarphs, así podremos imprimirlo en cualquier lugar y posición dentro de la web.

Si quieres aprender más sobre las preprocess functions

Argument #1 ($validateTo) must be of type DateTimeInterface, string given

En Symfony, al trabajar con propiedades o campos del tipo fecha en nuestra entidades, es posible que nos encontremos con este error:

App\Entity\Entidad::setValidateTo(): 
Argument #1 ($validateTo) must be of type DateTimeInterface, string given, 
called in /app/src/Command/UpdateEntidadInfo.php on line 50 

     Esto significa que aunque en nuestra entidad hemos declarado correctamente el tipo de propiedad, al intentar leerla desde otro lugar, sea controlador o comando de consola, tendremos que volver a añadir su tipo.

Drupal + Nginx + Php-cgi : 502 Bad Gateway error

     Si estás utilizando un servidor NGNIX para tus proyectos de Drupal, es posible que te hayas encontrado con el error 502 Bad Gateway error, sobretodo cuando estás como administrador o editando tus contenidos.

     El problema parece estar relacionado con los fastcgi buffers de Nginx

     Para solucionarlo, abre el archivo /etc/nginx/nginx.conf, y a continuación añade el código que está debajo en el área de http

Cómo instalar Make en Ubuntu

     GNU Make es una herramienta que controla la generación de ejecutables y otros archivos no fuente de un programa a partir de los archivos fuente del programa.

     Por ejemplo, en el caso de trabajar con contenedores de Docker, una vez tengas instalado Make, podrás ejecutar make up, en lugar de docker-compose up -d, para ponerlos en funcionamiento.

Cómo quitar la carpeta /web de la url de Drupal

A partir de Drupal 8 se recomienda que la instalación se realice utilizando el gestor de paquetes COMPOSER para mantener una estructura de archivos más fácil de gestionar mediante línea de comandos.

Esto presenta un nuevo problema que es la creación de la carpeta "/web" dentro de esa estructura que en la mayoría de los servidores compartidos terminará mostrándose como parte de nuestra url, ya que el dominio principal apuntará por defecto a la carpeta public_html o www en lugar de "public_html/web".