Anatomia de un módulo en Drupal 8

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

 

Author: Jeroen Derks

Jeroen is the founder of the Alicante Tech meetup group. His current day job is to mostly build all kinds of applications, ranging from IoT to educational to corporate.

Leave a Reply