SlideShare ist ein Scribd-Unternehmen logo
1 von 21
Downloaden Sie, um offline zu lesen
Entities en D7
MADs about Drupal   07/02/2013
Resumen



● ¿Qué es una entidad?

● ¿Cómo trabajar con entidades?

● ¿Cómo crear nuevas entidades?
Resumen



● ¿Qué es una entidad?

● ¿Cómo trabajar con entidades?

● ¿Cómo crear nuevas entidades?


         Entity API
Entities
● Unidades de información

● Definidas en el core de Drupal

● Pueden permitir el uso de fields

● En el core:
nodes, users, taxonomy terms, vocabularies,
comments, files
Además...
● Ofrecen métodos básicos
  entity_load(), entity_label(), entity_uri()

● View modes
  Diferentes visualizaciones (full, teaser...)
● Varios hooks:
  hook_entity_load(), hook_entity_presave(),
  hook_entity_insert(), hook_entity_update(),
  hook_entity_delete(), hook_entity_prepare_view(),
  hook_entity_view().
Fields
● Entities pueden contener fields


● Es posible definir bundles y revisions

   ○ Default bundle == entity type
   ○ Tipos de contenido para nodes, vocabularios para
     terms
● Un bundle define que fields contiene una
  entity
EntityFieldQuery
● API para hacer queries sobre entities
  ○ Acepta condiciones tanto a nivel de entity como a
    nivel de field
  ○ Acepta queries que afecten a distintos tipos de entity

  entityCondition()
  propertyCondition()
  fieldCondition()
  fieldLanguageCondition()
  ...
Entity API
● Módulo casi indispensable

● Añade nuevos hooks y funcionalidades
  ○ Facilita el manejo de entities
  ○ Facilita la creación de nuevos entity types
funciones
● entity_load(), entity_save(), entity_create(),
  entity_delete()
● entity_view(), entity_access(), entity_label(),
  entity_uri()
● entity_id(), entity_extract_ids()
● entity_export(), entity_import()
● entity_get_info(), entity_get_property_info()


  core
funciones
● entity_load(), entity_save(), entity_create(),
  entity_delete()
● entity_view(), entity_access(), entity_label(),
  entity_uri()
● entity_id(), entity_extract_ids()
● entity_export(), entity_import()
● entity_get_info(), entity_get_property_info()


  core              Entity API
hook_entity_property_info
● Permite definir a los módulos propiedades
  de las entities
● Se utiliza para posteriormente utilizar los
  metadatos correspondientes
● Incluye métodos como setter, getter, o
  permisos de acceso
Entity metadata wrappers
● Clases realmente útiles que permiten un acceso
   sencillo y unificado a las entities y sus fields o
   properties
   $wrapper = entity_metadata_wrapper('node', $node);
   $wrapper = entity_metadata_wrapper('node', $nid);
   $wrapper->author->profile->field_name->value();
   $wrapper->author->profile->field_name->set('New name');
   $wrapper->language('de')->body->summary->value();
   $wrapper->author->mail->access('edit') ? TRUE : FALSE;
   $wrapper->author->roles->optionsList();
   $wrapper->field_files[0]->description = 'The first file';
   $wrapper->save();
   $node = $wrapper->value();
Crear nuevos entity types (Entity API)
● Implementar hook_entity_info()

● Especificar clase controller
   ○ Usar EntityAPIController ahorra trabajo
   ○ Definir schema mediante hook_schema()

● Buenas prácticas:
   ○ Crear {entity_type}_load(), {entity_type}_create(),
     {entity_type}_delete(), {entity_type}_save()
EntityAPIController
● Invoca los hooks CRUD de forma
  automática

● Soporta entities basadas en clases
● Usar clases facilita las cosas:
  ○ Personalizando etiquetas, URLs, guardando...
  ○ Resulta útil:
    ■ $entity->entityType();
    ■ $entity->identifier();
    ■ $entity->view();
    ■ $entity->delete();
    ■ $entity->save();
    ■ ...
Entity API & Fields
● Sólo es necesario declarar la entity como "fieldable"
● entity_view() ya incluye los fields
● Facilita la gestión de bundles
  ○ Generear nuevo entity type para los bundles
  ○ Indicar que la nueva entity es "bundle of" la principal
  ○ Field API es invocada e incluida de forma
     automática

Ej: Módulo Profile proporciona 2 tipos Profile y Profile type
Entity API & Export
● Especificar el entity type como exportable

● $export = entity_export($entity_type,
  $entity);
● $entity = entity_import($entity_type,
  $export);

● Por defecto exporta en formato JSON
Integración con otros módulos
● Entity API permite integrar con otros
  módulos
  ○ Features gracias a los exportables

  ○ Integración básica con Views

  ○ Rules events

  ○ Token support mediante el módulo Entity tokens
Entity API Admin UI
● Se activa mediante hook_entity_info()


● Se puede personalizar sobreescribiendo el
  Controller


● Se adapta bien para gestionar bundle
  entities
Recursos
● Código fuente con los ejemplos
    ○ https://github.com/plopesc/entity_workshop
●   Código original del módulo example_task
    ○ http://www.trellon.com/content/blog/creating-own-entities-entity-api
●   Presentaciones relacionadas
    ○ http://bxl2011.drupaldays.org/bxl2011.drupaldays.org/node/313.html
    ○ http://www.slideshare.net/jdleonard/drupal-7-entities
●   Documentación Drupal.org
    ○ http://drupal.org/node/1260694
    ○ http://drupal.org/node/1343708
Recursos
Módulos contrib comentados en la sesión
● Entity API
    ○ http://drupal.org/project/entity
●   Entity View Modes
    ○ http://drupal.org/project/entity_view_mode
●   EntityFieldQuery Views Backend
    ○ http://drupal.org/project/efq_views
●   Entity Construction Kit
    ○ http://drupal.org/project/eck
Gracias

Weitere ähnliche Inhalte

Was ist angesagt?

Objetos implícitos
Objetos implícitosObjetos implícitos
Objetos implícitospaulacas
 
Entity Framework Core - Mappings
Entity Framework Core - MappingsEntity Framework Core - Mappings
Entity Framework Core - MappingsLeandro Tuttini
 
Constructores
ConstructoresConstructores
ConstructoresUCE
 
Introducción a JQuery
Introducción a JQueryIntroducción a JQuery
Introducción a JQueryContinuum
 
Charla Jquery
Charla JqueryCharla Jquery
Charla Jquerykaolong
 
2.android java
2.android   java2.android   java
2.android javaguidotic
 

Was ist angesagt? (6)

Objetos implícitos
Objetos implícitosObjetos implícitos
Objetos implícitos
 
Entity Framework Core - Mappings
Entity Framework Core - MappingsEntity Framework Core - Mappings
Entity Framework Core - Mappings
 
Constructores
ConstructoresConstructores
Constructores
 
Introducción a JQuery
Introducción a JQueryIntroducción a JQuery
Introducción a JQuery
 
Charla Jquery
Charla JqueryCharla Jquery
Charla Jquery
 
2.android java
2.android   java2.android   java
2.android java
 

Andere mochten auch

1970 systematic of the lizards of the gekkonid genus phyllodactylus
1970 systematic of the lizards of the gekkonid genus phyllodactylus1970 systematic of the lizards of the gekkonid genus phyllodactylus
1970 systematic of the lizards of the gekkonid genus phyllodactylusFranklin Chirinos
 
Ejercicio numeración y viñetas
Ejercicio numeración y viñetasEjercicio numeración y viñetas
Ejercicio numeración y viñetasTryxie
 
Lin_Dennis observing
Lin_Dennis observingLin_Dennis observing
Lin_Dennis observingDennis Psl
 

Andere mochten auch (6)

1970 systematic of the lizards of the gekkonid genus phyllodactylus
1970 systematic of the lizards of the gekkonid genus phyllodactylus1970 systematic of the lizards of the gekkonid genus phyllodactylus
1970 systematic of the lizards of the gekkonid genus phyllodactylus
 
725
725725
725
 
Get on with Field API
Get on with Field APIGet on with Field API
Get on with Field API
 
Ejercicio numeración y viñetas
Ejercicio numeración y viñetasEjercicio numeración y viñetas
Ejercicio numeración y viñetas
 
Drupal 8: Fields reborn
Drupal 8: Fields rebornDrupal 8: Fields reborn
Drupal 8: Fields reborn
 
Lin_Dennis observing
Lin_Dennis observingLin_Dennis observing
Lin_Dennis observing
 

Ähnlich wie MADs about Drupal: Programación de entities para D7

Entidades en drupal 8
Entidades en drupal 8Entidades en drupal 8
Entidades en drupal 8Atenea tech
 
Entidades en drupal 8
Entidades en drupal 8Entidades en drupal 8
Entidades en drupal 8Atenea tech
 
16 17 tecnologias python oop
16 17 tecnologias python oop16 17 tecnologias python oop
16 17 tecnologias python oopSoftware Guru
 
Introducción a Java Persistence API
Introducción a Java Persistence APIIntroducción a Java Persistence API
Introducción a Java Persistence APIJose Martinez
 
Persistencia de objetos con Hibernate
Persistencia de objetos con HibernatePersistencia de objetos con Hibernate
Persistencia de objetos con HibernateMauro Gomez Mejia
 
Diseño de Sistemas
Diseño de SistemasDiseño de Sistemas
Diseño de Sistemasjorgecaruci
 
Persistencia De Objetos(Hibernate)
Persistencia De Objetos(Hibernate)Persistencia De Objetos(Hibernate)
Persistencia De Objetos(Hibernate)Ronald Cuello
 
Novedades de aries
Novedades de ariesNovedades de aries
Novedades de arieslmrv
 
Framework .NET 3.5 06 Operativa básica del framework .net
Framework .NET 3.5 06 Operativa básica del framework .netFramework .NET 3.5 06 Operativa básica del framework .net
Framework .NET 3.5 06 Operativa básica del framework .netAntonio Palomares Sender
 
Programación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodosProgramación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodosAlvaro Enrique Ruano
 
Poo 2009 u2_introd_a_la_poo_2
Poo 2009 u2_introd_a_la_poo_2Poo 2009 u2_introd_a_la_poo_2
Poo 2009 u2_introd_a_la_poo_2Axel
 
Drupal 7 a través Drupal Commerce
Drupal 7 a través Drupal CommerceDrupal 7 a través Drupal Commerce
Drupal 7 a través Drupal CommercePedro Cambra
 
Programación_del_lado_del_servidor......
Programación_del_lado_del_servidor......Programación_del_lado_del_servidor......
Programación_del_lado_del_servidor......SaulSalinasNeri
 

Ähnlich wie MADs about Drupal: Programación de entities para D7 (20)

Entidades en drupal 8
Entidades en drupal 8Entidades en drupal 8
Entidades en drupal 8
 
Entidades en drupal 8
Entidades en drupal 8Entidades en drupal 8
Entidades en drupal 8
 
Introduccion a Doctrine 2 ORM
Introduccion a Doctrine 2 ORMIntroduccion a Doctrine 2 ORM
Introduccion a Doctrine 2 ORM
 
Oo basico
Oo basicoOo basico
Oo basico
 
16 17 tecnologias python oop
16 17 tecnologias python oop16 17 tecnologias python oop
16 17 tecnologias python oop
 
Introducción a Java Persistence API
Introducción a Java Persistence APIIntroducción a Java Persistence API
Introducción a Java Persistence API
 
Persistencia de objetos con Hibernate
Persistencia de objetos con HibernatePersistencia de objetos con Hibernate
Persistencia de objetos con Hibernate
 
Diseño de Sistemas
Diseño de SistemasDiseño de Sistemas
Diseño de Sistemas
 
T3 - JPA
T3 - JPAT3 - JPA
T3 - JPA
 
Persistencia De Objetos(Hibernate)
Persistencia De Objetos(Hibernate)Persistencia De Objetos(Hibernate)
Persistencia De Objetos(Hibernate)
 
Novedades de aries
Novedades de ariesNovedades de aries
Novedades de aries
 
Novedades de aries
Novedades de ariesNovedades de aries
Novedades de aries
 
Framework .NET 3.5 06 Operativa básica del framework .net
Framework .NET 3.5 06 Operativa básica del framework .netFramework .NET 3.5 06 Operativa básica del framework .net
Framework .NET 3.5 06 Operativa básica del framework .net
 
JQuery con ejemplos cortos
JQuery con ejemplos cortosJQuery con ejemplos cortos
JQuery con ejemplos cortos
 
Programación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodosProgramación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodos
 
Poo 2009 u2_introd_a_la_poo_2
Poo 2009 u2_introd_a_la_poo_2Poo 2009 u2_introd_a_la_poo_2
Poo 2009 u2_introd_a_la_poo_2
 
Drupal 7 a través Drupal Commerce
Drupal 7 a través Drupal CommerceDrupal 7 a través Drupal Commerce
Drupal 7 a través Drupal Commerce
 
Programación_del_lado_del_servidor......
Programación_del_lado_del_servidor......Programación_del_lado_del_servidor......
Programación_del_lado_del_servidor......
 
9.laravel
9.laravel9.laravel
9.laravel
 
Programación Orientada a Objetos para Python
Programación Orientada a Objetos para PythonProgramación Orientada a Objetos para Python
Programación Orientada a Objetos para Python
 

Mehr von Pablo López Escobés

Integración de APIs políglotas de mapas en Google Web Toolkit: IDELabMapstrac...
Integración de APIs políglotas de mapas en Google Web Toolkit: IDELabMapstrac...Integración de APIs políglotas de mapas en Google Web Toolkit: IDELabMapstrac...
Integración de APIs políglotas de mapas en Google Web Toolkit: IDELabMapstrac...Pablo López Escobés
 
Definición e implementación de soluciones basadas en APIs universales para la...
Definición e implementación de soluciones basadas en APIs universales para la...Definición e implementación de soluciones basadas en APIs universales para la...
Definición e implementación de soluciones basadas en APIs universales para la...Pablo López Escobés
 
Geohabilitación de gestores contenidos: CMSMap
Geohabilitación de gestores contenidos: CMSMapGeohabilitación de gestores contenidos: CMSMap
Geohabilitación de gestores contenidos: CMSMapPablo López Escobés
 
IDELab MapstractionInteractive: API Universal y Políglota
IDELab MapstractionInteractive: API Universal y PolíglotaIDELab MapstractionInteractive: API Universal y Políglota
IDELab MapstractionInteractive: API Universal y PolíglotaPablo López Escobés
 
Drupal & GIS: Convirtiendo Drupal en un GeoCMS
Drupal & GIS: Convirtiendo Drupal en un GeoCMSDrupal & GIS: Convirtiendo Drupal en un GeoCMS
Drupal & GIS: Convirtiendo Drupal en un GeoCMSPablo López Escobés
 

Mehr von Pablo López Escobés (9)

When Drupal met CARTO
When Drupal met CARTOWhen Drupal met CARTO
When Drupal met CARTO
 
D7 as D8
D7 as D8D7 as D8
D7 as D8
 
API como SaaS
API como SaaSAPI como SaaS
API como SaaS
 
Poniendo a drupal en el mapa
Poniendo a drupal en el mapaPoniendo a drupal en el mapa
Poniendo a drupal en el mapa
 
Integración de APIs políglotas de mapas en Google Web Toolkit: IDELabMapstrac...
Integración de APIs políglotas de mapas en Google Web Toolkit: IDELabMapstrac...Integración de APIs políglotas de mapas en Google Web Toolkit: IDELabMapstrac...
Integración de APIs políglotas de mapas en Google Web Toolkit: IDELabMapstrac...
 
Definición e implementación de soluciones basadas en APIs universales para la...
Definición e implementación de soluciones basadas en APIs universales para la...Definición e implementación de soluciones basadas en APIs universales para la...
Definición e implementación de soluciones basadas en APIs universales para la...
 
Geohabilitación de gestores contenidos: CMSMap
Geohabilitación de gestores contenidos: CMSMapGeohabilitación de gestores contenidos: CMSMap
Geohabilitación de gestores contenidos: CMSMap
 
IDELab MapstractionInteractive: API Universal y Políglota
IDELab MapstractionInteractive: API Universal y PolíglotaIDELab MapstractionInteractive: API Universal y Políglota
IDELab MapstractionInteractive: API Universal y Políglota
 
Drupal & GIS: Convirtiendo Drupal en un GeoCMS
Drupal & GIS: Convirtiendo Drupal en un GeoCMSDrupal & GIS: Convirtiendo Drupal en un GeoCMS
Drupal & GIS: Convirtiendo Drupal en un GeoCMS
 

Kürzlich hochgeladen

How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfvladimiroflores1
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 

Kürzlich hochgeladen (11)

How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 

MADs about Drupal: Programación de entities para D7

  • 1. Entities en D7 MADs about Drupal 07/02/2013
  • 2. Resumen ● ¿Qué es una entidad? ● ¿Cómo trabajar con entidades? ● ¿Cómo crear nuevas entidades?
  • 3. Resumen ● ¿Qué es una entidad? ● ¿Cómo trabajar con entidades? ● ¿Cómo crear nuevas entidades? Entity API
  • 4. Entities ● Unidades de información ● Definidas en el core de Drupal ● Pueden permitir el uso de fields ● En el core: nodes, users, taxonomy terms, vocabularies, comments, files
  • 5. Además... ● Ofrecen métodos básicos entity_load(), entity_label(), entity_uri() ● View modes Diferentes visualizaciones (full, teaser...) ● Varios hooks: hook_entity_load(), hook_entity_presave(), hook_entity_insert(), hook_entity_update(), hook_entity_delete(), hook_entity_prepare_view(), hook_entity_view().
  • 6. Fields ● Entities pueden contener fields ● Es posible definir bundles y revisions ○ Default bundle == entity type ○ Tipos de contenido para nodes, vocabularios para terms ● Un bundle define que fields contiene una entity
  • 7. EntityFieldQuery ● API para hacer queries sobre entities ○ Acepta condiciones tanto a nivel de entity como a nivel de field ○ Acepta queries que afecten a distintos tipos de entity entityCondition() propertyCondition() fieldCondition() fieldLanguageCondition() ...
  • 8. Entity API ● Módulo casi indispensable ● Añade nuevos hooks y funcionalidades ○ Facilita el manejo de entities ○ Facilita la creación de nuevos entity types
  • 9. funciones ● entity_load(), entity_save(), entity_create(), entity_delete() ● entity_view(), entity_access(), entity_label(), entity_uri() ● entity_id(), entity_extract_ids() ● entity_export(), entity_import() ● entity_get_info(), entity_get_property_info() core
  • 10. funciones ● entity_load(), entity_save(), entity_create(), entity_delete() ● entity_view(), entity_access(), entity_label(), entity_uri() ● entity_id(), entity_extract_ids() ● entity_export(), entity_import() ● entity_get_info(), entity_get_property_info() core Entity API
  • 11. hook_entity_property_info ● Permite definir a los módulos propiedades de las entities ● Se utiliza para posteriormente utilizar los metadatos correspondientes ● Incluye métodos como setter, getter, o permisos de acceso
  • 12. Entity metadata wrappers ● Clases realmente útiles que permiten un acceso sencillo y unificado a las entities y sus fields o properties $wrapper = entity_metadata_wrapper('node', $node); $wrapper = entity_metadata_wrapper('node', $nid); $wrapper->author->profile->field_name->value(); $wrapper->author->profile->field_name->set('New name'); $wrapper->language('de')->body->summary->value(); $wrapper->author->mail->access('edit') ? TRUE : FALSE; $wrapper->author->roles->optionsList(); $wrapper->field_files[0]->description = 'The first file'; $wrapper->save(); $node = $wrapper->value();
  • 13. Crear nuevos entity types (Entity API) ● Implementar hook_entity_info() ● Especificar clase controller ○ Usar EntityAPIController ahorra trabajo ○ Definir schema mediante hook_schema() ● Buenas prácticas: ○ Crear {entity_type}_load(), {entity_type}_create(), {entity_type}_delete(), {entity_type}_save()
  • 14. EntityAPIController ● Invoca los hooks CRUD de forma automática ● Soporta entities basadas en clases ● Usar clases facilita las cosas: ○ Personalizando etiquetas, URLs, guardando... ○ Resulta útil: ■ $entity->entityType(); ■ $entity->identifier(); ■ $entity->view(); ■ $entity->delete(); ■ $entity->save(); ■ ...
  • 15. Entity API & Fields ● Sólo es necesario declarar la entity como "fieldable" ● entity_view() ya incluye los fields ● Facilita la gestión de bundles ○ Generear nuevo entity type para los bundles ○ Indicar que la nueva entity es "bundle of" la principal ○ Field API es invocada e incluida de forma automática Ej: Módulo Profile proporciona 2 tipos Profile y Profile type
  • 16. Entity API & Export ● Especificar el entity type como exportable ● $export = entity_export($entity_type, $entity); ● $entity = entity_import($entity_type, $export); ● Por defecto exporta en formato JSON
  • 17. Integración con otros módulos ● Entity API permite integrar con otros módulos ○ Features gracias a los exportables ○ Integración básica con Views ○ Rules events ○ Token support mediante el módulo Entity tokens
  • 18. Entity API Admin UI ● Se activa mediante hook_entity_info() ● Se puede personalizar sobreescribiendo el Controller ● Se adapta bien para gestionar bundle entities
  • 19. Recursos ● Código fuente con los ejemplos ○ https://github.com/plopesc/entity_workshop ● Código original del módulo example_task ○ http://www.trellon.com/content/blog/creating-own-entities-entity-api ● Presentaciones relacionadas ○ http://bxl2011.drupaldays.org/bxl2011.drupaldays.org/node/313.html ○ http://www.slideshare.net/jdleonard/drupal-7-entities ● Documentación Drupal.org ○ http://drupal.org/node/1260694 ○ http://drupal.org/node/1343708
  • 20. Recursos Módulos contrib comentados en la sesión ● Entity API ○ http://drupal.org/project/entity ● Entity View Modes ○ http://drupal.org/project/entity_view_mode ● EntityFieldQuery Views Backend ○ http://drupal.org/project/efq_views ● Entity Construction Kit ○ http://drupal.org/project/eck