Date: 2017-Jan-25
Presentation by: Javier Gómez
Meetup: Anatomia de un módulo en Drupal 8
Video: TBA
Anatomía de un módulo en Drupal 8
Javier Gómez
Drupal Backend Developer (EUIPO)
www.codigoweb.es
@fjgomez2
Evolución del código en Drupal
Drupal 7
• Hooks
Drupal 8
• Algunos Hooks
• Symfony
Drupal 9
• Symfony
Symfony y Drupal 8
Componentes heredados de Symfony2:
• Routing
• HttpFoundation
• Debug
• DependencyInjection
• Validator
• Yaml
• Serializer
• Twig
• EventDispatcher
• ClassLoader
• HttpKernel
Estructura Básica
• {drupal_path}/sites/all/modules
Archivos y Carpetas
• {drupal_path}/modules
Info
• Archivo de instalación
• Contiene la información básica del módulo
• Muy similar en ambas versiones
{path_module}/test3.info
{path_module}/test3.info.yml
Menús, alias y rutas
• Test3.module
hook_menu vs routing
• test3.routing.yml
• Hook_menu()
• test3.links.menu.yml
Routing
module_name.routing.yml
test3.routing.yml
• Ruta
• Path
• Controller
• Permisos
• Formulario
Controller
• test3.routing.yml
• Namespace\Class::Method
• Src/Controller/Test3Controller.php
Configuración
• Hook_menu()
• test3.routing.yml
• Formulario (Callback function)
• Formulario
• Parecido a Controller (namespace/class)
• {module_path}/src/Form/{class_name}.php
Configuración
• getFormId()
• Lo usamos para especificar el id al formulario.
ConfigFormBase
FormStateInterface
• $form_id
• getEditableConfigNames()
• Lee el nombre de variable de configuración que será editable.
• submitForm(array &$form, FormStateInterface $form_state)
• form_submit()
• buildForm(array $form, FormStateInterface $form_state)
• hook_form()
• validateForm(array &$form, FormStateInterface $form_state)
• form_validate()
Configuración
Formulario
• getFormId()
• validateForm()
• getEditableConfigNames()
• submitForm()
Configuración
• buildForm()
Formulario
Configuración
Formulario
Permisos
• Hook_menu()
• Permisos custom
• Hook_permission()
• test3.routing.yml
• Permisos custom
• Test3.permissions.yml
Ayuda
• hook_help() en {module_name}.module
• hook_help() en {module_name}.module
DEMO
https://github.com/codigoweb-org/Drupal-8-Hello-World
Preguntas?
Documentación
• https://www.drupal.org/docs/8/creating-custom-modules
• https://www.drupal.org/docs/8/converting-drupal-7-modules-to-drupal-8
Gracias!!
Javier Gómez
Drupal Backend Developer (EUIPO)
www.codigoweb.es
@fjgomez2
www.linkedin.com/in/codigoweb