logo

Extra Block Types (EBT) - Nueva experiencia con Layout Builder❗

Extra Block Types (EBT): tipos de bloques con estilo y personalizables: Presentaciones de diapositivas, Pestañas, Tarjetas, Acordeones y muchos más. Configuraciones integradas para fondo, DOM Box y plugins de JavaScript. Experimenta hoy el futuro de la construcción de diseños.

Módulos de demostración EBT Descargar módulos EBT

❗Extra Paragraph Types (EPT) - Nueva experiencia con Paragraphs

Extra Paragraph Types (EPT): conjunto de módulos basado en párrafos de forma análoga.

Módulos de demostración EPT Descargar módulos EPT

Scroll

Verificación de acceso + cacheabilidad

19/06/2025, by Ivan

Los verificadores de acceso a rutas, hook_entity_access() y todo lo que devuelva un objeto AccessResultInterface, deben añadir los metadatos de cacheabilidad correspondientes.

Si aún no lo ha leído, revise las etiquetas de caché (cache tags), contextos de caché (cache contexts) y max-age.

Parámetros para la verificación de acceso

El mecanismo de verificación de acceso recibirá varios parámetros — al menos la cuenta de usuario (AccountInterface) y frecuentemente un objeto. Luego tomará una decisión basada en las propiedades de estos parámetros.

Se debe añadir una dependencia cacheable del parámetro $parameter si el cambio en alguna propiedad de dicho parámetro cambia el resultado del acceso.

Por ejemplo:

$access_result = AccessResult::allowedIf($node->isPublished())
  // El resultado del acceso depende de una propiedad del objeto que puede cambiar: es una dependencia cacheable.
  ->addCacheableDependency($node);

Otro caso común es cuando el resultado del acceso depende de una propiedad que no puede cambiar (normalmente un identificador o UUID). Por ejemplo, permitir acceso si la cuenta de usuario dada es el propietario del objeto:

$access_result = AccessResult::allowedIf($node->getOwnerId() === $account->id())
  // El resultado del acceso depende del propietario del nodo, y el propietario podría cambiar.
  ->addCacheableDependency($node);

// El resultado del acceso también depende de una cuenta de usuario, y el ID de la cuenta de usuario nunca cambia. Por eso no es necesario añadir $account como dependencia cacheable.

// Pero, si $account es el usuario actual, y no un usuario codificado, también debemos asegurarnos de variar la caché por usuario actual para no ejecutar esta verificación una sola vez y luego reutilizar su resultado para todos los usuarios.
if ($account->id() === \Drupal::currentUser()->id()) {
  $access_result->cachePerUser();
}
Source authors:

Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.