Cómo crear un tipo de entidad en Drupal 8 desde el principio. Definición de la nueva entidad, especificación de campos y formulario, handlers, validaciones y renderización.
Sesión impartida en el DrupalDay 2017 en Santiago de Compostela.
Vídeo quí. No se me ve a mi, pero se ven las slides y se escucha perfectamente:
https://vimeo.com/192773521
5. Drupalday Santiago 2017 @estoyausente
¿Qué vamos a ver?
¿Qué es un tipo de entidad?
De contenido vs de configuración
Algo de terminología
Definición del tipo de entidad en bd
Formularios
Validaciones
Renderizar entidades
6. Drupalday Santiago 2017 @estoyausente
¿Qué es un tipo de entidad?
Un tipo de entidad es una clase
que tiene métodos y manejadores
definidos para almacenar, listar,
cargar y mostrar una estructura de
datos de forma unificada.
“
7. Drupalday Santiago 2017 @estoyausente
¿Qué es un tipo de entidad?
Un tipo de entidad es una clase
que tiene métodos y manejadores
definidos para almacenar, listar,
cargar y mostrar una estructura de
datos de forma unificada.
“
WTF????
14. MiDrupal$ vim src/Entity/MyEntity.php
namespace DrupalgalicianEntity;
use DrupalCoreFieldBaseFieldDefinition;
use DrupalCoreEntityContentEntityBase;
. . .
class Galician extends ContentEntityBase {
use StringTranslationTrait;
}
vim src/Entity/Galician.php
15. MiDrupal$ vim src/Entity/MyEntity.php
public static function
baseFieldDefinitions(EntityTypeInterface $entity_type) {
$fields['id'] = BaseFieldDefinition::create('integer')
->setLabel(t('ID'))
->setDescription(t('The ID of the galician person.'))
->setReadOnly(TRUE);
$fields['clothing'] = BaseFieldDefinition::create('string')
->setLabel(t('From'))
->setDescription(t(‘Galician clothing.’)
->setSettings(array(
'default_value' => 'Raincoat',
))
->setRequired(true);
$fields['created'] = BaseFieldDefinition::create('created')
->setLabel(t('Created'))
->setDescription(t('The time that the entity was
created.'));
}
vim src/Entity/Galician.php
17. MiDrupal$
public function getClothing() {}
public function setClothing() {}
public function getOwner() {}
public function preSave() {}
public function postSave() {}
public function preCreate() {}
. . .
vim src/Entity/Galician.php
51. Drupalday Santiago 2017 @estoyausente
Para otro día
Otros maneadores disponibles
(storage, access, …)
Bundles y fields
Traducciones
Revisiones
Extensión de entidades existentes
…
52. Drupalday Santiago 2017 @estoyausente
Referencias
Core
La documentación de
drupal.org
Módulo Examples
Drupal console (Aunque suele generar
bastante más de lo que necesitamos)Utilidad