Ganchos utilizados en varias operaciones de entidad.
Las operaciones de creación, lectura, actualización y eliminación de entidades (CRUD) las realizan las clases de almacenamiento de entidades; consulte el tema Entity API para obtener más información. La mayoría de las entidades utilizan o amplían las clases predeterminadas: Drupal Core Entity Sql SqlContentEntityStorage para entidades de contenido y Drupal Core Config Entity ConfigEntityStorage para entidades de configuración. Para estas entidades, existe un conjunto de ganchos que se invoca para cada operación CRUD, que los desarrolladores de módulos pueden implementar para afectar estas operaciones; estos ganchos en realidad se invocan desde métodos en Drupal Core Entity EntityStorageBase.
En el caso de las entidades de contenido, la visualización y el renderizado son manejados por una clase de constructor de vistas; consulte el tema Entity API para obtener más información. La mayoría de los creadores de vistas extienden o usan la clase predeterminada Drupal Core Entity EntityViewBuilder.
La edición de entidades (incluida la adición de nuevas entidades) se maneja mediante clases de formulario de entidad; consulte el tema Entity API para obtener más información. La mayoría de los formularios de edición de entidades amplían las clases base Drupal Core Entity EntityForm o Drupal Core Entity ContentEntityForm. Tenga en cuenta que muchas otras operaciones, como confirmar la eliminación de entidades, también utilizan clases de formulario de entidad.
Este tema enumera todas las operaciones de vista y CRUD de entidad, y los ganchos y otras operaciones que se invocan (en orden) para cada operación. Algunas notas:
- Siempre que se invoca un gancho de entidad, hay un gancho de entidad específico de tipo y un gancho de entidad genérico. Por ejemplo, durante una operación de creación en un nodo, primero se invocaba hook_node_create () y luego hook_entity_create ().
- Los ganchos específicos del tipo de entidad se representan en la lista siguiente como hook_ENTITY_TYPE _… (hook_ENTITY_TYPE_create () en este ejemplo). Para implementar uno de estos ganchos para una entidad cuyo nombre de máquina es “foo”, defina una función llamada mymodule_foo_create (), por ejemplo. También tenga en cuenta que la entidad o matriz de entidades que se pasan a un gancho de tipo específico son de la clase de entidad específica, no de la clase de entidad genérica, por lo que en su implementación, puede hacer que el argumento $ entidad sea algo así como $ nodo y darle una sugerencia de tipo específico (que normalmente debería ser para la interfaz específica, como Drupal Node NodeInterface para nodos).
- Se supone que $ storage en los ejemplos de código es una clase de almacenamiento de entidad. Consulte el tema Entity API para obtener información sobre cómo crear una instancia de la clase de almacenamiento correcta para un tipo de entidad.
- Se supone que $ view_builder en los ejemplos de código es una clase de constructor de vistas de entidad. Consulte el tema Entity API para obtener información sobre cómo crear una instancia de la clase de constructor de vistas correcta para un tipo de entidad.
- Durante muchas operaciones, se invocan métodos estáticos en la clase de entidad, que implementa Drupal Entity EntityInterface.
Crear operaciones
Para crear una entidad:
$entity = $storage->create(); // Add code here to set properties on the entity. // Until you call save(), the entity is just in memory. $entity->save();
También hay un método de acceso directo en clases de entidad, que crea una entidad con una matriz de valores de propiedad proporcionados: Drupal Core Entity :: create ().
Ganchos invocados durante la operación de creación:
-
hook_ENTITY_TYPE_create ()
-
hook_entity_create ()
Consulte Operaciones de guardado a continuación para conocer la parte de guardado de la operación.
Operaciones de lectura / carga
Para cargar (leer) una sola entidad:
$entity = $storage->load($id);
Para cargar varias entidades:
$entities = $storage->loadMultiple($ids);
Dado que load () llama a loadMultiple (), estas son realmente la misma operación. Aquí está el orden de los ganchos y otras operaciones que tienen lugar durante la carga de la entidad:
- La entidad se carga desde el almacenamiento.
- postLoad () se llama en la clase de entidad, pasando todas las entidades cargadas.
-
hook_entity_load ()
-
hook_ENTITY_TYPE_load ()
Cuando se carga una entidad, normalmente se carga la revisión de la entidad predeterminada. También es posible cargar una revisión diferente, para entidades que admiten revisiones, con este código:
$entity = $storage->loadRevision($revision_id);
Esto implica los mismos ganchos y operaciones que la carga normal de entidades.
Guardar operaciones
Para actualizar una entidad existente, deberá cargarla, cambiar las propiedades y luego guardar; como se describió anteriormente, al crear una nueva entidad, también deberá guardarla. Aquí está el orden de los ganchos y otros eventos que ocurren durante el guardado de una entidad:
- preSave () se llama en el objeto de entidad y en los objetos de campo.
-
hook_ENTITY_TYPE_presave ()
-
hook_entity_presave ()
- La entidad se guarda en el almacenamiento.
- Para obtener actualizaciones sobre las entidades de contenido, si se agregó una traducción que no estaba presente anteriormente:
-
hook_ENTITY_TYPE_translation_insert ()
-
hook_entity_translation_insert ()
-
- Para obtener actualizaciones sobre las entidades de contenido, si se eliminó una traducción:
-
hook_ENTITY_TYPE_translation_delete ()
-
hook_entity_translation_delete ()
-
- postSave () se llama en el objeto de entidad.
-
hook_ENTITY_TYPE_insert () (nuevo) o hook_ENTITY_TYPE_update () (actualización)
-
hook_entity_insert () (nuevo) o hook_entity_update () (actualización)
Algunos tipos de entidad específicos invocan ganchos durante las operaciones preSave () o postSave (). Ejemplos:
- Configuración de campo preSave (): hook_field_storage_config_update_forbid ()
- Node postSave (): hook_node_access_records () y hook_node_access_records_alter ()
- Configurar entidades que actúan como paquetes de entidades en postSave (): hook_entity_bundle_create ()
- Comentario: hook_comment_publish () y hook_comment_unpublish () según corresponda.
Editar operaciones
Cuando se usa el formulario de agregar / editar de una entidad para agregar o editar una entidad, hay varios ganchos que se invocan:
-
hook_entity_prepare_form ()
-
hook_ENTITY_TYPE_prepare_form ()
-
hook_entity_form_display_alter () (solo para entidades de contenido)
Eliminar operaciones
Para eliminar una o más entidades, cárguelas y luego elimínelas:
$entities = $storage->loadMultiple($ids); $storage->delete($entities);
Durante la operación de eliminación, ocurren los siguientes ganchos y otros eventos:
- Se llama a preDelete () en la clase de entidad.
-
hook_ENTITY_TYPE_predelete ()
-
hook_entity_predelete ()
- La información de la entidad y del campo se elimina del almacenamiento.
- postDelete () se llama en la clase de entidad.
-
hook_ENTITY_TYPE_delete ()
-
hook_entity_delete ()
Algunos tipos de entidad específicos invocan ganchos durante el proceso de eliminación. Ejemplos:
- Paquete de entidades postDelete (): hook_entity_bundle_delete ()
Las revisiones individuales de una entidad también se pueden eliminar:
$storage->deleteRevision($revision_id);
Esta operación invoca las siguientes operaciones y ganchos:
- La revisión está cargada (consulte las operaciones de lectura / carga más arriba).
- La información de revisión y campo se elimina de la base de datos.
-
hook_ENTITY_TYPE_revision_delete ()
-
hook_entity_revision_delete ()
Ver / renderizar operaciones
Para hacer una matriz de renderizado para una entidad cargada:
// You can omit the language ID if the default language is being used. $build = $view_builder->view($entity, 'view_mode_name', $language->getId());
También puede utilizar el método viewMultiple () para ver varias entidades.
Hooks invocados durante la operación de construcción de una matriz de renderizado:
-
hook_entity_view_mode_alter ()
-
hook_ENTITY_TYPE_build_defaults_alter ()
-
hook_entity_build_defaults_alter ()
Los constructores de vistas de algunos tipos anulan estos ganchos, en particular:
- El constructor de vistas de Tour no invoca ningún gancho.
- El constructor de vistas de bloque invoca hook_block_view_alter () y hook_block_view_BASE_BLOCK_ID_alter (). Tenga en cuenta que en otros constructores de vistas, los enlaces de modificación de vistas se ejecutan más adelante en el proceso.
Durante la operación de renderizado, el visor de entidades predeterminado ejecuta los siguientes enlaces y operaciones en el paso de renderizado previo:
-
hook_entity_view_display_alter ()
-
hook_entity_prepare_view ()
- Los campos de entidad se cargan y se crean matrices de renderizado para ellos utilizando sus formateadores.
-
hook_entity_display_build_alter ()
-
hook_ENTITY_TYPE_view ()
-
hook_entity_view ()
-
hook_ENTITY_TYPE_view_alter ()
-
hook_entity_view_alter ()
Algunos constructores específicos tienen ganchos específicos:
- El constructor de vistas de nodo invoca hook_node_links_alter ().
- El constructor de vistas de comentarios invoca hook_comment_links_alter ().
Después de este punto en el renderizado, el sistema de temas se hace cargo. Consulte el tema Sistema de temas y API de procesamiento para obtener más información.
Otros ganchos de entidad
Algunos tipos de entidades invocan ganchos para operaciones específicas:
- Buscando nodos:
-
hook_ranking ()
- La consulta se ejecuta para encontrar nodos coincidentes.
- El nodo resultante está cargado
- Se construye la matriz de renderizado de nodo
-
Se llama a comment_node_update_index () (esto agrega texto “N comentarios”)
-
hook_node_search_result ()
-
- Buscar nodos de indexación:
- El nodo está cargado
- Se construye la matriz de renderizado de nodo
-
hook_node_update_index ()
Expediente
- core / lib / Drupal / Core / Entity /entity.api.php, línea 16
- Hooks y documentación relacionada con entidades.
Funciones
Nombre | Localización | Descripción |
---|---|---|
hook_entity_build_defaults_alter | core / lib / Drupal / Core / Entity /entity.api.php | Modifique los valores renderizables de la entidad antes de verificar la caché en drupal_render (). |
hook_entity_bundle_delete | core / lib / Drupal / Core / Entity /entity.api.php | Actuar sobre entity_bundle_delete (). |
hook_entity_create | core / lib / Drupal / Core / Entity /entity.api.php | Actúa al crear una nueva entidad. |
hook_entity_delete | core / lib / Drupal / Core / Entity /entity.api.php | Responder a la eliminación de la entidad. |
hook_entity_display_build_alter | core / lib / Drupal / Core / Entity /entity.api.php | Modifique la matriz de representación generada por un EntityDisplay para una entidad. |
hook_entity_field_values_init | core / lib / Drupal / Core / Entity /entity.api.php | Actúa al inicializar un objeto de entidad seleccionable. |
hook_entity_form_display_alter | core / lib / Drupal / Core / Entity /entity.api.php | Modifique la configuración utilizada para mostrar un formulario de entidad. |
hook_entity_insert | core / lib / Drupal / Core / Entity /entity.api.php | Responder a la creación de una nueva entidad. |
hook_entity_load | core / lib / Drupal / Core / Entity /entity.api.php | Actuar sobre las entidades cuando se cargan. |
hook_entity_predelete | core / lib / Drupal / Core / Entity /entity.api.php | Actuar antes de la eliminación de la entidad. |
hook_entity_prepare_form | core / lib / Drupal / Core / Entity /entity.api.php | Actúa sobre un objeto de entidad a punto de mostrarse en un formulario de entidad. |
hook_entity_prepare_view | core / lib / Drupal / Core / Entity /entity.api.php | Actuar sobre las entidades a medida que se preparan para su visualización. |
hook_entity_presave | core / lib / Drupal / Core / Entity /entity.api.php | Actuar sobre una entidad antes de que sea creada o actualizada. |
hook_entity_revision_delete | core / lib / Drupal / Core / Entity /entity.api.php | Responder a la eliminación de la revisión de la entidad. |
hook_entity_translation_create | core / lib / Drupal / Core / Entity /entity.api.php | Actúa al crear una nueva entidad de traducción. |
hook_entity_translation_delete | core / lib / Drupal / Core / Entity /entity.api.php | Responder a la eliminación de la traducción de la entidad. |
hook_entity_translation_insert | core / lib / Drupal / Core / Entity /entity.api.php | Responder a la creación de una nueva entidad de traducción. |
hook_ENTITY_TYPE_build_defaults_alter | core / lib / Drupal / Core / Entity /entity.api.php | Modifique los valores renderizables de la entidad antes de verificar la caché en drupal_render (). |
hook_ENTITY_TYPE_create | core / lib / Drupal / Core / Entity /entity.api.php | Actúa al crear una nueva entidad de un tipo específico. |
hook_ENTITY_TYPE_delete | core / lib / Drupal / Core / Entity /entity.api.php | Responder a la eliminación de una entidad de un tipo en particular. |
hook_ENTITY_TYPE_field_values_init | core / lib / Drupal / Core / Entity /entity.api.php | Actúa al inicializar un objeto de entidad seleccionable. |
hook_ENTITY_TYPE_insert | core / lib / Drupal / Core / Entity /entity.api.php | Responder a la creación de una nueva entidad de un tipo particular. |
hook_ENTITY_TYPE_load | core / lib / Drupal / Core / Entity /entity.api.php | Actuar sobre entidades de un tipo específico cuando se cargan. |
hook_ENTITY_TYPE_predelete | core / lib / Drupal / Core / Entity /entity.api.php | Actuar antes de la eliminación de la entidad de un tipo de entidad en particular. |
hook_ENTITY_TYPE_prepare_form | core / lib / Drupal / Core / Entity /entity.api.php | Actúa sobre un tipo particular de objeto de entidad a punto de estar en forma de entidad. |
hook_ENTITY_TYPE_presave | core / lib / Drupal / Core / Entity /entity.api.php | Actuar sobre un tipo específico de entidad antes de que se cree o actualice. |
hook_ENTITY_TYPE_revision_delete | core / lib / Drupal / Core / Entity /entity.api.php | Responder a la eliminación de la revisión de la entidad de un tipo en particular. |
hook_ENTITY_TYPE_translation_create | core / lib / Drupal / Core / Entity /entity.api.php | Actúa al crear una nueva entidad de traducción de un tipo específico. |
hook_ENTITY_TYPE_translation_delete | core / lib / Drupal / Core / Entity /entity.api.php | Responder a la eliminación de la traducción de entidades de un tipo en particular. |
hook_ENTITY_TYPE_translation_insert | core / lib / Drupal / Core / Entity /entity.api.php | Responder a la creación de una nueva entidad de traducción de un tipo particular. |
hook_ENTITY_TYPE_update | core / lib / Drupal / Core / Entity /entity.api.php | Responder a las actualizaciones de una entidad de un tipo en particular. |
hook_ENTITY_TYPE_view | core / lib / Drupal / Core / Entity /entity.api.php | Actuar sobre las entidades de un tipo particular que se ensamblan antes de renderizar. |
hook_ENTITY_TYPE_view_alter | core / lib / Drupal / Core / Entity /entity.api.php | Modifique los resultados de la matriz de creación de entidades para un tipo de entidad en particular. |
hook_entity_update | core / lib / Drupal / Core / Entity /entity.api.php | Responder a las actualizaciones de una entidad. |
hook_entity_view | core / lib / Drupal / Core / Entity /entity.api.php | Actuar sobre las entidades que se ensamblan antes de la prestación. |
hook_entity_view_alter | core / lib / Drupal / Core / Entity /entity.api.php | Modifique los resultados de la matriz de creación de entidades. |
hook_entity_view_display_alter | core / lib / Drupal / Core / Entity /entity.api.php | Modifique la configuración utilizada para mostrar una entidad. |
hook_entity_view_mode_alter | core / lib / Drupal / Core / Entity /entity.api.php | Cambia el modo de vista de una entidad que se muestra. |
hook_node_search_result | núcleo / módulos / nodo /node.api.php | Actuar sobre un nodo que se muestra como resultado de la búsqueda. |
hook_node_update_index | núcleo / módulos / nodo /node.api.php | Actuar sobre un nodo que se indexa para realizar búsquedas. |
hook_ranking | núcleo / módulos / nodo /node.api.php | Proporcione métodos adicionales de puntuación para los resultados de búsqueda principales de los nodos. |