Field Types API: Field, widgets y formatters
description
Transcript of Field Types API: Field, widgets y formatters
![Page 1: Field Types API: Field, widgets y formatters](https://reader033.fdocuments.net/reader033/viewer/2022051313/548da0b2b479597a588b47ad/html5/thumbnails/1.jpg)
TITLE:
PRESENTERS:
Field Types API: Field, widgets y formattersMiguel Ordóñez
![Page 2: Field Types API: Field, widgets y formatters](https://reader033.fdocuments.net/reader033/viewer/2022051313/548da0b2b479597a588b47ad/html5/thumbnails/2.jpg)
© 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](https://reader033.fdocuments.net/reader033/viewer/2022051313/548da0b2b479597a588b47ad/html5/thumbnails/3.jpg)
© 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](https://reader033.fdocuments.net/reader033/viewer/2022051313/548da0b2b479597a588b47ad/html5/thumbnails/4.jpg)
© 2012_
Algunos conceptos
![Page 5: Field Types API: Field, widgets y formatters](https://reader033.fdocuments.net/reader033/viewer/2022051313/548da0b2b479597a588b47ad/html5/thumbnails/5.jpg)
© 2012_
Algunos conceptos: Que es un Field
Es una pieza de funcionalidad que se adjunta a una entidad (nodo, taxonomia, usuario, etc...)
![Page 6: Field Types API: Field, widgets y formatters](https://reader033.fdocuments.net/reader033/viewer/2022051313/548da0b2b479597a588b47ad/html5/thumbnails/6.jpg)
© 2012_
Algunos conceptos: Field API
“The Field API allows custom data fields to be attached to Drupal entities and takes care of storing, loading, editing, and rendering field data” (http://api.drupal.org)
Field Attach API Field
Info API
Field Storage API
Field API bulk data
Field CRUD API
Field language
API
Field Types API
![Page 7: Field Types API: Field, widgets y formatters](https://reader033.fdocuments.net/reader033/viewer/2022051313/548da0b2b479597a588b47ad/html5/thumbnails/7.jpg)
© 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](https://reader033.fdocuments.net/reader033/viewer/2022051313/548da0b2b479597a588b47ad/html5/thumbnails/8.jpg)
© 2012_
y el Formatter.
Algunos conceptos: Field Type, Widget, Formatter
![Page 9: Field Types API: Field, widgets y formatters](https://reader033.fdocuments.net/reader033/viewer/2022051313/548da0b2b479597a588b47ad/html5/thumbnails/9.jpg)
© 2012_
Ejemplo, Como crear un campo personalizado
![Page 10: Field Types API: Field, widgets y formatters](https://reader033.fdocuments.net/reader033/viewer/2022051313/548da0b2b479597a588b47ad/html5/thumbnails/10.jpg)
© 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](https://reader033.fdocuments.net/reader033/viewer/2022051313/548da0b2b479597a588b47ad/html5/thumbnails/11.jpg)
© 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](https://reader033.fdocuments.net/reader033/viewer/2022051313/548da0b2b479597a588b47ad/html5/thumbnails/12.jpg)
© 2012_
participante.info
Ejemplo, Como crear un campo personalizado: .info
![Page 13: Field Types API: Field, widgets y formatters](https://reader033.fdocuments.net/reader033/viewer/2022051313/548da0b2b479597a588b47ad/html5/thumbnails/13.jpg)
© 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 14: Field Types API: Field, widgets y formatters](https://reader033.fdocuments.net/reader033/viewer/2022051313/548da0b2b479597a588b47ad/html5/thumbnails/14.jpg)
© 2012_
participante.install (hook_field_schema)
Ejemplo, Como crear un campo personalizado: Field Type
Schema API: drupal.org/node/146843
![Page 15: Field Types API: Field, widgets y formatters](https://reader033.fdocuments.net/reader033/viewer/2022051313/548da0b2b479597a588b47ad/html5/thumbnails/15.jpg)
© 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](https://reader033.fdocuments.net/reader033/viewer/2022051313/548da0b2b479597a588b47ad/html5/thumbnails/16.jpg)
© 2012_
hook_field_widget_info
Ejemplo, Como crear un campo personalizado: Widget
![Page 17: Field Types API: Field, widgets y formatters](https://reader033.fdocuments.net/reader033/viewer/2022051313/548da0b2b479597a588b47ad/html5/thumbnails/17.jpg)
© 2012_
participante.module
Ejemplo, Como crear un campo personalizado: Widget
![Page 18: Field Types API: Field, widgets y formatters](https://reader033.fdocuments.net/reader033/viewer/2022051313/548da0b2b479597a588b47ad/html5/thumbnails/18.jpg)
© 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](https://reader033.fdocuments.net/reader033/viewer/2022051313/548da0b2b479597a588b47ad/html5/thumbnails/19.jpg)
© 2012_
hook_field_is_empty
Ejemplo, Como crear un campo personalizado: Widget
![Page 20: Field Types API: Field, widgets y formatters](https://reader033.fdocuments.net/reader033/viewer/2022051313/548da0b2b479597a588b47ad/html5/thumbnails/20.jpg)
© 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](https://reader033.fdocuments.net/reader033/viewer/2022051313/548da0b2b479597a588b47ad/html5/thumbnails/21.jpg)
© 2012_
Ejemplo, Como crear un campo personalizado: Formatter
hook_field_formatter_info
![Page 22: Field Types API: Field, widgets y formatters](https://reader033.fdocuments.net/reader033/viewer/2022051313/548da0b2b479597a588b47ad/html5/thumbnails/22.jpg)
© 2012_
Ejemplo, Como crear un campo personalizado: Formatter
hook_field_formatter_view
![Page 23: Field Types API: Field, widgets y formatters](https://reader033.fdocuments.net/reader033/viewer/2022051313/548da0b2b479597a588b47ad/html5/thumbnails/23.jpg)
© 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](https://reader033.fdocuments.net/reader033/viewer/2022051313/548da0b2b479597a588b47ad/html5/thumbnails/24.jpg)
© 2012_
Ejemplo, Como crear un campo personalizado: Formatter
hook_field_formatter_settings_form
![Page 25: Field Types API: Field, widgets y formatters](https://reader033.fdocuments.net/reader033/viewer/2022051313/548da0b2b479597a588b47ad/html5/thumbnails/25.jpg)
© 2012_
Ejemplo, Como crear un campo personalizado: Formatter
hook_field_formatter_settings_summary
![Page 26: Field Types API: Field, widgets y formatters](https://reader033.fdocuments.net/reader033/viewer/2022051313/548da0b2b479597a588b47ad/html5/thumbnails/26.jpg)
© 2012_
Algunos ejemplos de formatters: http://customformatters.com
Ejemplo, Como crear un campo personalizado: Formatter
![Page 27: Field Types API: Field, widgets y formatters](https://reader033.fdocuments.net/reader033/viewer/2022051313/548da0b2b479597a588b47ad/html5/thumbnails/27.jpg)
© 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](https://reader033.fdocuments.net/reader033/viewer/2022051313/548da0b2b479597a588b47ad/html5/thumbnails/28.jpg)
© 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](https://reader033.fdocuments.net/reader033/viewer/2022051313/548da0b2b479597a588b47ad/html5/thumbnails/29.jpg)
© 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](https://reader033.fdocuments.net/reader033/viewer/2022051313/548da0b2b479597a588b47ad/html5/thumbnails/30.jpg)
© 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](https://reader033.fdocuments.net/reader033/viewer/2022051313/548da0b2b479597a588b47ad/html5/thumbnails/31.jpg)
© 2012_
MUCHAS GRACIAS