Field Types API: Field, widgets y formatters

31
TITLE: PRESENTERS: Field Types API: Field, widgets y formatters Miguel Ordóñez

description

Desarrollar tipos de campos (field types) en Drupal es sencillo una vez se conoce las bases. Crear tu propio field en ocasiones puede ser una mejora de usabilidad y/o rendimiento para tu proyecto. Si quieres aprender a crear tu propio field, conocer mejor Field Types API y ver un poco de código, esta es tu sesión.

Transcript of Field Types API: Field, widgets y formatters

Page 2: Field Types API: Field, widgets y formatters

© 2012_

Nombre: Miguel Ordóñez (mordonez)

Twitter: http://twitter.com/miguelordonez

Co-fundador de Ymbra

Quien Soy?

Page 3: Field Types API: Field, widgets y formatters

© 2012_

Agenda

Algunos conceptosQue es un FieldField API

Como crear tu propio fieldSchemaWidgetFormatterValidation

Algunas cosas a tener en cuentaDrupal 8Referencias

Page 4: Field Types API: Field, widgets y formatters

© 2012_

Algunos conceptos

Page 5: Field Types API: Field, widgets y formatters

© 2012_

Algunos conceptos: Que es un Field

Es una pieza de funcionalidad que se adjunta a una entidad (nodo, taxonomia, usuario, etc...)

Page 7: Field Types API: Field, widgets y formatters

© 2012_

Un campo puede tener 3 piezas importantes

• Field type.

• Widget.

Algunos conceptos: Field Type, Widget, Formatter

Page 8: Field Types API: Field, widgets y formatters

© 2012_

y el Formatter.

Algunos conceptos: Field Type, Widget, Formatter

Page 9: Field Types API: Field, widgets y formatters

© 2012_

Ejemplo, Como crear un campo personalizado

Page 10: Field Types API: Field, widgets y formatters

© 2012_

Ejemplo, Como crear un campo personalizado

Vamos a crear un campo absurdo como ejemplo, lo utilizaremos para añadir participantes de la drupalcamp.

El campo tendrá los campos: nombre, apellidos y el enlace al perfil de drupal.org

Podremos decidir si queremos enlazar el participante a su perfil de drupal.

Page 11: Field Types API: Field, widgets y formatters

© 2012_

Creamos el módulo “participante”

Creamos los ficheros .info, .install i .module

Ejemplo, Como crear un campo personalizado

Page 12: Field Types API: Field, widgets y formatters

© 2012_

participante.info

Ejemplo, Como crear un campo personalizado: .info

Page 13: Field Types API: Field, widgets y formatters

© 2012_

participante.module (hook_field_info)

Ejemplo, Como crear un campo personalizado: Field Type

* los literales mejor en inglés. Pero para el ejemplo se pusieron en español :-P

Page 15: Field Types API: Field, widgets y formatters

© 2012_

Crear el Widget d’entrada.

Definimos la infomación básica del widget por medio hook_field_widget_info

Utilizamos hook_field_widget_form para definir el formulario d’entrada del campo.

Utilizamos hook_field_is_empty para validar que nuestro campo no está vacio.

Ejemplo, Como crear un campo personalizado: Widget

Page 16: Field Types API: Field, widgets y formatters

© 2012_

hook_field_widget_info

Ejemplo, Como crear un campo personalizado: Widget

Page 17: Field Types API: Field, widgets y formatters

© 2012_

participante.module

Ejemplo, Como crear un campo personalizado: Widget

Page 18: Field Types API: Field, widgets y formatters

© 2012_

Para añadir una validación, utilizaremos #element_validate

Ejemplo, Como crear un campo personalizado: Widget

Page 19: Field Types API: Field, widgets y formatters

© 2012_

hook_field_is_empty

Ejemplo, Como crear un campo personalizado: Widget

Page 20: Field Types API: Field, widgets y formatters

© 2012_

Crearemos el formatter para mostrar los valores del campo.

Utilizaremos hook_field_formatter_info para definir el formatter.

Utilizaremos hook_field_formatter_view para definir la lógica de salida.

Ejemplo, Como crear un campo personalizado: Formatter

Page 21: Field Types API: Field, widgets y formatters

© 2012_

Ejemplo, Como crear un campo personalizado: Formatter

hook_field_formatter_info

Page 22: Field Types API: Field, widgets y formatters

© 2012_

Ejemplo, Como crear un campo personalizado: Formatter

hook_field_formatter_view

Page 23: Field Types API: Field, widgets y formatters

© 2012_

Utilizaremos hook_field_formatter_settings_summary y hook_field_formatter_settings_form para añadir elementos configurables del formatter.

Ejemplo, Como crear un campo personalizado: Formatter

Page 24: Field Types API: Field, widgets y formatters

© 2012_

Ejemplo, Como crear un campo personalizado: Formatter

hook_field_formatter_settings_form

Page 25: Field Types API: Field, widgets y formatters

© 2012_

Ejemplo, Como crear un campo personalizado: Formatter

hook_field_formatter_settings_summary

Page 26: Field Types API: Field, widgets y formatters

© 2012_

Algunos ejemplos de formatters: http://customformatters.com

Ejemplo, Como crear un campo personalizado: Formatter

Page 27: Field Types API: Field, widgets y formatters

© 2012_

Un Field puede tener más de un formatter o widget a la vez.

Se pueden crear campos personalizados sin crear widgets y viceversa.

Algunas cosas a tener en cuenta

Page 28: Field Types API: Field, widgets y formatters

© 2012_

CMI

Widget y formatter como plugins en drupal 8

Field API vs OO

Drupal 8?

Page 29: Field Types API: Field, widgets y formatters

© 2012_

Text

• text

Drupal 8?

* Overview of the pluginification of Field API in Drupal 8: http://drupalsun.com/node/32450

Page 30: Field Types API: Field, widgets y formatters

© 2012_

http://api.drupal.org

Field Types API: http://api.drupal.org/api/drupal/modules--field--field.api.php/group/field_types/7

Examples for Developers: http://drupal.org/project/examples

http://customformatters.com

Overview of the pluginification of Field API in Drupal 8, http://drupalsun.com/node/32450

Poutine Maker: An Introduction to the Field API in Drupal 7 (Part 1) http://evolvingweb.ca/story/poutine-maker-introduction-field-api-drupal-7-part-1

Field API - Field UI - Drupal 8

Form API Reference. http://api.drupal.org/api/drupal/developer!topics!forms_api_reference.html/7

Referencias

Page 31: Field Types API: Field, widgets y formatters

© 2012_

MUCHAS GRACIAS