Introducción a formularios

Resumen de la sección: En esta sección, el instructor introduce el tema de los formularios y explica que comenzarán con este tema antes de volver a las bases de datos en las próximas clases.

Creación de páginas controladoras

  • El instructor repasa la creación de rutas o páginas controladoras.
  • Explica que puede surgir la necesidad de crear una página controladora con datos específicos.
  • Interrupción por parte del estudiante.

Clases controladoras

  • El instructor explica que una clase controladora no tiene por qué ser necesariamente una página y puede ser una clase suelta que extienda controller base.
  • Señala que siempre hay que tener en cuenta la programación orientada a objetos y las capas oficiales.
  • Explica cómo crear una clase intermedia para añadir métodos extra y luego crear clases controladoras que extiendan esa clase intermedia.

Flexibilidad en estructuras

  • El instructor destaca la importancia de abrir un poco la mente para cuando surgen necesidades complejas o proyectos muy complejos.
  • Señala que estas estructuras son rígidas pero extensibles, lo importante es conservar la base mientras se amplía.

Creación de formularios

  • El instructor muestra cómo lanzar el comando "duss generate" para crear un módulo nuevo.
  • Explica los tres tipos diferentes de formularios disponibles: form simple, formularios de búsqueda y formularios con validación.

Creación de formulario en módulo

Resumen de la sección: En esta sección, el instructor muestra cómo crear un formulario en un módulo.

Creación del módulo y generación del formulario

  • Primero, se crea el módulo y luego se genera el formulario con "Bruce generate form :simple".
  • Se crea una clase llamada "SoloSimple" para ir dentro del módulo.
  • Se cambia la ruta a "/forms/simple" y se le asigna el título "Simple".
  • Se añade dependencia al módulo.

Descarga del módulo y estructura

  • El nuevo módulo es descargado completo.
  • La estructura incluye un archivo info y routing.

Diferencias entre routing de página controladora y formulario

  • El archivo routing es similar al de una página controladora, pero la entrada es "form" en lugar de "control".
  • En una clase controladora, solo hace falta un método para ejecutar esa página. En cambio, en un formulario necesitamos varios métodos (validación, construcción, envío), por lo que apuntamos a una clase específica solo para ese formulario.

Clase Form

  • La clase que creamos extiende a Form.

Construyendo un formulario en Drupal 8

Resumen de la sección: En esta sección, el instructor explica cómo construir un formulario en Drupal 8 y cómo validar los elementos del formulario.

Método Bill form

  • El método Bill form es el encargado de construir el formulario.
  • El formulario está compuesto por un array donde cada elemento es un elemento del formulario.
  • Dependiendo del tipo de formulario, tendrá diferentes botones de acción.

Validación de elementos del formulario

  • El validated permite validar la información introducida en el formulario.
  • La validez form es la que hace la validación de los elementos del formulario.
  • Si algún campo no cumple con las condiciones establecidas, lanza un error y devuelve el formulario al usuario para que lo complete correctamente.

Form State

  • El Form State es un objeto que contiene el estado actual del formulario.
  • Se accede al Form State con get value y se comprueba si cumple con las condiciones establecidas.

Submit

  • Al submit solo se llega si todos los campos han sido validados correctamente.

Estructura del formulario

Resumen de la sección: En esta sección, el presentador explica la estructura básica de un formulario en Drupal y cómo funciona su validación.

Creando un formulario

  • Un formulario puede ser utilizado para guardar información en una tabla, enviar un correo o trabajar con nodos.
  • La estructura básica del formulario incluye tres partes: bill form para construir el formulario, validay para validar los datos y submit para enviar el formulario.
  • El submit es el punto donde se realiza la acción deseada con los datos del formulario.

Validación de campos obligatorios

  • Drupal tiene una forma de comprobar si los campos obligatorios están completados antes de enviar el formulario.
  • Si intentamos enviar un campo vacío, el navegador mostrará un mensaje que no llega a Drupal.
  • Si quitamos la propiedad "requerido" del HTML, podemos engañar al navegador pero Drupal aún comprueba si los campos obligatorios están completados.
  • Si hay errores en los campos obligatorios, Drupal muestra mensajes junto a cada campo utilizando el módulo Inline Form Errors.

Enviando y procesando el formulario

  • Una vez que todos los campos son válidos, se envía el mensaje "El mensaje ha sido enviado".
  • Después de procesar todo lo que tenga por aquí y hacer cualquier otra cosa necesaria con el formulario, Drupal hace un redirect hacia la portada.

Creación de un formulario con React Hook Form

Resumen de la sección: En esta sección, el presentador explica cómo crear un formulario utilizando React Hook Form.

Creación del formulario

  • Se crea un nuevo archivo para el componente del formulario.
  • Se importa useForm desde react-hook-form.
  • Se utiliza useForm para inicializar el objeto formMethods.
  • Se crea una función para manejar la presentación del formulario.

Añadir campos al formulario

  • Se añaden campos al formulario utilizando los componentes proporcionados por react-hook-form, como Controller y ErrorMessage.
  • Cada campo tiene su propio objeto de configuración que incluye reglas de validación y opciones adicionales.

Validación del formulario

  • La validación se realiza utilizando las reglas definidas en los objetos de configuración de cada campo.
  • El objeto errors contiene información sobre cualquier error que ocurra durante la validación.
  • Los errores se muestran en tiempo real utilizando el componente ErrorMessage.

Envío del formulario

  • El envío del formulario se maneja mediante la función proporcionada por useForm.
  • La función recibe una función callback que se ejecuta cuando el envío es exitoso.
  • Los valores introducidos en el formulario están disponibles dentro de la función callback.

Accediendo a los valores del formulario con React Hook Form

Resumen de la sección: En esta sección, el presentador explica cómo acceder a los valores introducidos en un formulario creado con React Hook Form.

Acceso a los valores del formulario

  • Los valores introducidos en el formulario están disponibles dentro del objeto formState.
  • El método más común para acceder a los valores es getValues().
  • También se puede utilizar watch() para observar cambios en los valores del formulario.

Acceso a campos individuales

  • Los valores de campos individuales pueden ser accedidos utilizando el método getValues() y proporcionando el nombre del campo como argumento.
  • Alternativamente, se puede utilizar la función callback proporcionada por watch() para observar cambios en un campo específico.

Ejemplo práctico

  • Se muestra un ejemplo práctico de cómo acceder a los valores del formulario utilizando getValues() y watch().
  • Los valores son mostrados en la consola para demostrar que están siendo correctamente accedidos.

Creación de formulario con PHP

Resumen de la sección: En esta sección, el presentador muestra cómo crear un formulario utilizando PHP. Se explica cómo agregar campos adicionales al formulario y cómo validar los datos ingresados en los campos.

Agregar campo de título al formulario

  • El presentador agrega un campo de título al formulario.
  • Se menciona que el campo es un array y que las claves del array deben ser únicas.
  • Se discute la validación del campo y se sugiere usar una función de PHP para contar el número de palabras.

Validar datos ingresados en el formulario

  • El presentador sugiere agregar validación a otro campo utilizando la función str_word_count de PHP.
  • Se muestra cómo obtener el nombre del campo y cómo verificar si tiene menos de 5 palabras.
  • Se menciona la importancia de indicar el campo donde debe aparecer el mensaje de error.

Conclusiones

En esta sección, aprendimos a agregar campos adicionales a un formulario y validar los datos ingresados en ellos. También aprendimos sobre la importancia de utilizar claves únicas para los elementos del array y cómo utilizar funciones predefinidas en PHP para realizar tareas específicas.

Comprobación de formularios

Resumen de la sección: En esta sección, el presentador habla sobre cómo comprobar los formularios en Drupal. Se enfoca en la importancia de verificar que los elementos del formulario estén bien colocados y que se cumplan los valores esperados. También menciona la validación del correo electrónico y cómo proteger el sistema a nivel de servidor.

Verificación de elementos del formulario

  • Es importante verificar que los elementos del formulario estén bien colocados.
  • Se debe comprobar que se cumplan los valores esperados.
  • Utilizar stape get values para ver todos los valores y comprobar que se produce el error o no.

Validación del correo electrónico

  • La validación del correo electrónico es importante.
  • El navegador hace una primera comprobación, pero también hay que hacer la comprobación a nivel de Drupal.
  • La propiedad Fall value permite poner un valor por defecto.

Protección del sistema a nivel de servidor

  • Siempre hay que proteger nuestro sistema a nivel de servidor, no solo a nivel de cliente.
  • Es posible cambiar el tipo de campo desde HTML, por lo que siempre hay que hacer la comprobación correspondiente.

Añadir un campo con valor por defecto

Resumen de la sección: En esta sección, el instructor muestra cómo agregar un campo con un valor por defecto y permitir que el usuario lo cambie. También sugiere dos tareas para los estudiantes.

Agregar un campo con valor por defecto

  • Se puede agregar un valor por defecto a un campo cuando se carga el formulario.
  • El usuario puede cambiar este valor si lo desea.

Tareas sugeridas para los estudiantes

  1. Añadir un campo de texto llamado "name" y completar la información del usuario actual.
  1. Completar la información del usuario actual usando name y email.

Solución de problemas en la etiqueta Fall balútete

Resumen de la sección: En esta sección, el instructor ayuda a solucionar problemas en una etiqueta Fall balútete.

Consejos para solucionar problemas en Fall balútete

  • Verificar que las clases estén escritas correctamente.
  • Comprobar que esté guardando y subiendo el archivo correctamente.
  • Compartir pantalla si es necesario para obtener ayuda adicional.

Revisión del código

Resumen de la sección: En esta sección, el instructor revisa el código y da consejos sobre cómo mejorarlo.

Consejos para mejorar el código

  • Siempre poner primero un valor estático antes de usar uno dinámico.
  • Recordar poner siempre una coma al final de un array, incluso si es el último elemento.
  • Comprobar que funciona con un valor estático antes de usar uno dinámico.
  • Si no funciona después de usar un valor dinámico, verificar los métodos utilizados en la variable ocurren user.
  • Asegurarse de que los campos adicionales estén rellenos para el usuario actual.

Recargar y validar el correo electrónico

Resumen de la sección: En esta sección, el presentador habla sobre cómo recargar y validar el correo electrónico en Drupal.

Recargar

  • Se menciona que se va a recargar.
  • No hay más detalles disponibles.

Validar el correo electrónico

  • El presentador muestra cómo acceder al listado de servicios de Drupal para buscar por "email".
  • Se encuentra una clase llamada "email validator" que tiene un método llamado "is valid".
  • Para llamar al servicio, se utiliza la función drupal service seguida del nombre del servicio (email.validator).
  • Se muestra cómo utilizar la función is valid para validar si un correo electrónico es válido o no.
  • Si el correo electrónico no es válido, se lanza un error con un mensaje personalizado.

Eliminación y recuperación de negado

Resumen de la sección: En esta sección, el presentador muestra cómo eliminar temporalmente una validación de correo electrónico para probar un error y luego recuperarla. También explica cómo el navegador bloquea automáticamente los correos electrónicos no válidos.

  • Se elimina temporalmente la validación de correo electrónico para probar un error.
  • El navegador bloquea automáticamente los correos electrónicos no válidos.
  • Si se intenta enviar un correo electrónico no válido, el navegador espera una arroba y algo detrás antes de bloquearlo.
  • Una vez que se comprueba que el correo es válido, se puede volver a agregar la validación eliminada anteriormente.

Uso del Current User y Email Validator

Resumen de la sección: En esta sección, el presentador muestra cómo inyectar servicios en una clase controladora utilizando las propiedades Current User y Email Validator.

Inyección de Servicios

  • Los servicios Current User y Email Validator son generados como propiedades en la clase controladora.
  • Para acceder a los servicios, es necesario buscar sus nombres en el contenedor de servicios.
  • La propiedad protegida "current user" debe ser agregada a la clase controladora junto con otra propiedad llamada "email validator".

Agregar Servicios al Create

  • El método Create accede al contenedor de servicios para buscar los nombres correspondientes a los servicios Current User y Email Validator.
  • La clase asociada con el servicio Current User debe ser copiada y agregada a la cláusula "use" en la parte superior de la clase controladora.
  • La misma acción se aplica para el servicio Email Validator.
  • También es necesario agregar la interfaz del contenedor al principio de la clase controladora.

Inyección de Dependencias

Resumen de la sección: En esta sección, el instructor explica cómo utilizar la inyección de dependencias en Drupal 8. Explica cómo pasar los servicios que se van a inyectar al método create y cómo asignarlos en el constructor.

Creación del Constructor

  • El método create recibe el contenedor y los servicios que se van a inyectar.
  • El constructor cambia debido a que hay otros servicios que no son los mismos que antes.
  • Los servicios deben ser pasados como parámetros y cada uno lleva su clase.

Asignación de Servicios

  • Se debe obtener el nombre completo de la clase para ponerlo en la cláusula use.
  • El primer parámetro es current user y el segundo es email validator.
  • Se hace la asignación entre thisser y los parámetros que entran.

Validación del Código

  • El IDE muestra si hay algún problema con las variables o si las cláusulas no están siendo utilizadas.
  • Si pita algún sitio puede ser porque hay un error en algún nombre de clase o falta una cláusula use.

Utilización de Servicios Inyectados

Resumen de la sección: En esta sección, el instructor muestra cómo utilizar los servicios inyectados en Drupal 8. Explica cómo usar directamente el disco en user y cambiar current por tips current.

Cambio del Código

  • El disco rang user y el email validator dentro del Dish ya están disponibles.
  • Ya no es necesario llamar al drupal global, se debe usar directamente el disco en user.
  • Se cambia current por tips current y se elimina la comprobación de email de drupal global.

Prueba del Código

  • Se realiza una prueba para verificar que todo sigue funcionando correctamente.
  • No se ha encontrado nada raro en este método.

Inyección de dependencias

Resumen de la sección: En esta sección, el orador habla sobre cómo quitar una inyección que ya estaba disponible y cómo limpiar todo lo relacionado con el usuario actual. También menciona que hay una propiedad llamada "Access" que determina si tenemos acceso a un elemento.

Quitando una inyección existente

  • El email validator es más específico que el current.
  • La propiedad del current user debe ser eliminada para evitar sobrescribir.
  • Es necesario limpiar todo lo relacionado con el current.

Propiedad Access

  • Access determina si tenemos acceso al elemento.
  • Si Access es False, no tendremos acceso al elemento y se anulará completamente la entrada.

Ejemplo de uso de Access en username

Resumen de la sección: En esta sección, el orador muestra un ejemplo de cómo usar la propiedad "Access" en el campo "username".

  • Se agrega la propiedad "Access" al campo "username".
  • El campo "username" desaparece cuando se establece la propiedad "Access" en False.
  • Se muestra cómo los valores del formulario están disponibles incluso si no son visibles para el usuario.

Conclusión

Resumen de la sección: En esta última parte, el orador concluye su presentación y sugiere tomar un descanso antes de continuar.

Prueba de formulario en usuario anónimo

Resumen de la sección: En esta sección, el presentador muestra cómo probar un formulario como usuario anónimo y cómo manejar los mensajes de error que pueden aparecer.

Prueba del formulario como usuario anónimo

  • Se puede probar el formulario como usuario anónimo abriendo una ventana de incógnito y ejecutando el formulario. El nombre de usuario no se rellena automáticamente porque no tiene valor.
  • Si se rellena el correo electrónico, debe ser válido para que pase la prueba.

Manejo de mensajes de error

  • Cuando no se ven los mensajes de DPM (Depuración por Mensajes Directos), es necesario ir a los permisos del usuario.
  • En desarrollo, se puede permitir que cualquier usuario vea la salida del DPM. En producción, esto no es posible.
  • Para guardar la salida del DPM en lugar de mostrarla en pantalla, es necesario guardar estos permisos.

Comprobación si hay nombre de cuenta

  • Si el nombre de cuenta está vacío, no rompe nada. Simplemente devuelve un valor vacío.
  • Se puede usar un operador ternario para comprobar si hay nombre de cuenta y mostrar o ocultar campos según corresponda.

Uso del operador ternario en PHP

Resumen de la sección: En esta sección, el presentador explica cómo usar el operador ternario en PHP para simplificar el código.

  • El operador ternario en PHP es un If abreviado que se puede usar para meter una sola línea de código.
  • La sintaxis del operador ternario es: condición ? valor si verdadero : valor si falso.
  • Se puede usar una variable auxiliar para simplificar aún más el código.

Desactivar el campo de email con "disable"

Resumen de la sección: En esta sección, el presentador muestra cómo desactivar un campo de correo electrónico utilizando la propiedad "disable".

  • Se utiliza la propiedad "disable" para desactivar un elemento, pero aún así se muestra en pantalla.
  • El presentador establece la propiedad "disable" en true para el campo de correo electrónico.
  • Se comprueba que el campo de correo electrónico está desactivado y no puede ser editado.

Comprobación del estado del usuario

Resumen de la sección: En esta sección, el presentador muestra cómo comprobar si un usuario está registrado o es anónimo.

  • Se establece una condición utilizando los métodos "is_anonymous" o "is_authenticated" para determinar si un usuario es anónimo o registrado.
  • Si el usuario es anónimo, se le da acceso a cierta funcionalidad. Si no lo es, no tiene acceso.
  • También se menciona que las condiciones siempre devuelven verdadero o falso.

Problemas con caché

Resumen de la sección: En esta sección, el presentador considera que puede haber problemas con la caché al comprobar si un usuario está registrado o es anónimo.

  • El presentador sugiere que los problemas pueden estar relacionados con la caché.
  • Sin embargo, después de vaciar la caché, todavía hay problemas para mostrar ciertos valores dependiendo del estado del usuario.

Operador ternario

Resumen de la sección: En esta sección, el presentador explica cómo utilizar el operador ternario para asignar valores a una propiedad dependiendo de una condición.

  • El presentador muestra cómo utilizar el operador ternario para asignar un valor verdadero o falso a una propiedad.
  • También se menciona que el operador ternario es útil cuando se quiere asignar un valor diferente a verdadero o falso.
  • Se utiliza la función "is_anonymous" para determinar si un usuario es anónimo y, en consecuencia, establecer la propiedad en true o false.

Propiedad "disable" vs. Propiedad "access"

Resumen de la sección: En esta sección, el presentador explica las diferencias entre las propiedades "disable" y "access".

  • La propiedad "disable" desactiva un elemento pero aún lo muestra en pantalla.
  • La propiedad "access" oculta un elemento completamente si no se cumple cierta condición.
  • El presentador muestra cómo utilizar ambas propiedades para controlar el acceso a ciertas funcionalidades.

Modificación de elementos en formulario

Resumen de la sección: En esta sección, el presentador muestra cómo modificar elementos en un formulario. Se explica cómo mostrar y deshabilitar elementos según si el usuario está autenticado o no. También se discuten las propiedades obligatorias y opcionales de los elementos del formulario.

Mostrar y deshabilitar elementos según la autenticación del usuario

  • Al mostrar un elemento con su valor, pero no poder modificarlo, se puede usar una condición para que el true y false dependan de alguna variable.
  • Si queremos que un elemento esté desactivado cuando el usuario está autenticado, podemos poner una condición para que devuelva true disable.
  • Si el usuario es anónimo, el campo de email se deja como estado normal mientras que si está autenticado solo lo deshabilita pero el usuario lo puede ver.

Propiedades obligatorias y opcionales

  • Las propiedades obligatorias son: tipo, descripción, valor por defecto, disable y Access.
  • El atributo nos permite añadir elementos adicionales a la parte HTML. Por ejemplo, podemos añadir clases al elemento.
  • El peso es utilizado para ordenar los campos en un formulario.

Ejemplos prácticos

  • El elemento film set permite agrupar campos dentro de él.
  • Es importante hacer referencia al campo final en lugar del grupo padre al obtener valores del Ford State.

Cuidado con los nombres de elementos

Resumen de la sección: En esta sección, el presentador advierte sobre la importancia de tener cuidado al nombrar los elementos dentro de un grupo en Drupal. Los nombres deben ser únicos e irrepetibles para evitar conflictos.

Nombres de elementos

  • Es importante que los nombres de cada elemento dentro del grupo sean únicos e irrepetibles.
  • Si hay conflictos entre los nombres, puede haber problemas cuando se devuelven los valores.
  • El nombre final del campo debe ser el nombre único y final que se utiliza.

Uso del elemento "details"

Resumen de la sección: En esta sección, el presentador explica cómo utilizar el elemento "details" en Drupal para reemplazar al anterior "personal data".

Elemento "details"

  • El elemento "details" es una versión más moderna y configurable del filtro.
  • Permite crear una caja desplegable que puede estar abierta o cerrada por defecto.

Uso del elemento "vertical tabs"

Resumen de la sección: En esta sección, el presentador muestra cómo utilizar el elemento "vertical tabs" en Drupal para agrupar elementos y darles estilo.

Elemento "vertical tabs"

  • El elemento "vertical tabs" permite agrupar elementos y darles estilo.
  • Todo lo que se ve en Drupal puede replicarse utilizando este elemento.
  • Se utiliza para agrupar elementos cuando queremos darles otro estilo o diseño.

Ejemplo completo con grupos y vertical tabs

Resumen de la sección: En esta sección, el presentador muestra un ejemplo completo utilizando grupos y vertical tabs en Drupal.

Ejemplo completo

  • Se muestra un ejemplo completo utilizando grupos y vertical tabs.
  • El grupo "information" contiene dos elementos "details".
  • El elemento "vertical tabs" se utiliza para agrupar los elementos dentro del grupo.
  • Los nombres de los elementos deben ser únicos e irrepetibles.

Propiedades de los elementos del formulario

Resumen de la sección: En esta sección, se discuten las propiedades específicas de cada elemento del formulario y cómo acceder a ellas a través de sus clases correspondientes.

Propiedades de los elementos del formulario

  • Los elementos del formulario tienen propiedades específicas que se pueden acceder a través de sus clases correspondientes.
  • Las propiedades comunes incluyen el tipo de elemento, mientras que otras pueden depender del elemento en sí mismo.
  • Por ejemplo, el vertical tabs tiene una propiedad llamada thefap que permite indicar qué pestaña debe abrirse por defecto.
  • Cada elemento de formulario tiene una clase asociada que maneja su programación y propiedades.
  • El container tiene una propiedad opcional que indica si debe renderizarse cuando no tiene hijos visibles.

Elementos básicos del formulario

  • Los elementos básicos incluyen text, textarea, email, numérico, password y teléfono.
  • El textarea permite agregar un formato de texto con el editor incluido.
  • Es posible restringir los formatos disponibles para el usuario al llenar un campo obligatorio.

Introducción

Resumen de la sección: En esta sección, el presentador introduce el tema del formulario web y explica su importancia en la creación de sitios web interactivos.

¿Qué es un formulario web?

  • Un formulario web es una herramienta que permite a los usuarios enviar información a través de un sitio web.
  • Los formularios pueden ser utilizados para recopilar información de contacto, comentarios, opiniones y más.
  • Los formularios son una parte importante de la experiencia del usuario en un sitio web.

Campos ocultos

Resumen de la sección: En esta sección, el presentador explica cómo funcionan los campos ocultos en los formularios web y cómo pueden ser utilizados para pasar información adicional.

¿Qué son los campos ocultos?

  • Los campos ocultos son elementos HTML que no son visibles para el usuario pero que contienen información adicional.
  • Los campos ocultos pueden ser utilizados para pasar información como el ID del usuario o el ID del nodo.
  • Hay dos tipos de campos ocultos: "hidden" y "value". El campo "hidden" es visible en el código fuente mientras que el campo "value" no lo es.

¿Cómo utilizar los campos ocultos?

  • Para utilizar un campo oculto, debemos agregarlo al formulario con su respectivo valor.
  • Podemos acceder al valor del campo oculto en el código PHP utilizando la variable $_POST.
  • Es importante tener cuidado con la información que se pasa a través de los campos ocultos, ya que puede ser accesible para cualquier persona que tenga acceso al código fuente.

Elementos Renderizables y Formularios

Resumen de la sección: En esta sección, el instructor habla sobre los elementos renderizables y cómo los elementos de formulario son un subconjunto de ellos. También explica cómo agregar HTML en cualquier parte del formulario utilizando el elemento "ítem". Luego, describe los elementos de lista y selección, incluyendo el uso del elemento "Select" y sus opciones.

Elementos Renderizables

  • Los elementos renderizables incluyen tanto los elementos de formulario como otros que no tienen interacción con el usuario.
  • El elemento "ítem" permite agregar HTML en cualquier parte del formulario.

Elementos de Lista y Selección

  • El elemento "Select" es utilizado para crear una lista desplegable con opciones predefinidas.
  • Las opciones dentro del elemento "Select" utilizan una estructura similar a la del HTML, con claves y valores.
  • El valor seleccionado por el usuario es lo que se guarda y envía por el formulario.
  • Los elementos de lista y selección también pueden tener un valor por defecto.

Checkbox, Radio Buttons y Botones de Radio

  • Los checkbox funcionan como verdadero o falso.
  • Los botones de radio permiten al usuario seleccionar una opción única entre varias opciones predefinidas.

Elementos de Formulario

Resumen de la sección: En esta sección, el presentador muestra los diferentes elementos que se pueden utilizar en un formulario en Drupal.

Tipos de elementos

  • El Tablet Select: es una tabla donde solo eliges un valor.
  • Options: tiene un código que corresponde al líder del usuario.
  • Elementos de fecha: hay varios tipos, como el modo popular y el modo separado.
  • Botón Submit: es similar a enviar por defecto.
  • Actions: es un grupo de botones que generalmente incluye submit, vista previa, eliminar y cancelar.
  • Elemento Button: permite añadir elementos adicionales que no sean submit. Por ejemplo, Image Button añade un botón con una imagen o icono.
  • Selección de archivo y selección de color: se verán a nivel programado.

Campos específicos de Drupal

  • Campo Peso: permite elegir desde un valor negativo hasta uno positivo para ordenar.
  • Campo Machine Name: autogenera el nombre del sistema a partir del campo anterior pero luego tiene su propia edición. Funciona como el componente de nombre del sistema que está en todos los elementos de Drupal.
  • Autoconflicto: cuando rellenamos usuarios o taxonomías, busca cualquier usuario o término correspondiente según lo que estemos seleccionando.

Modificación de formularios con hook alter

Resumen de la sección: En esta sección, el presentador explica cómo modificar cualquier formulario del sistema, incluso si es de otro módulo, utilizando hook alter.

  • Hook Alter: permite toquetear cualquier formulario del sistema.

Ejemplo de código para implementar un Hook

Resumen de la sección: En esta sección, el presentador muestra un ejemplo de código para implementar un Hook en Drupal.

Parámetros del formulario

  • El hook_form_alter se ejecuta para todos los formularios.
  • Los parámetros que tiene son form, form_state y form_id.
  • Es importante recordar que el nombre del sistema del formulario es el form_id.

Generación del código

  • Se puede generar un ejemplo de código utilizando el comando drush generate hook.
  • Para este caso, como es un Hook, se utiliza el comando drush generate hook --hook=hook_form_alter.
  • No hay nada específico que hacer para esto.

Implementación del Hook

  • Para implementar el Hook en cuestión, se debe utilizar la función Ford alter.
  • En este caso, sería: $form = Ford alter($form, $form_state, $form_id);

Consideraciones al implementar Hooks en Drupal

Resumen de la sección: En esta sección, el presentador da algunas consideraciones importantes a tener en cuenta al implementar Hooks en Drupal.

Nombre del módulo

  • Al copiar Hooks de otros módulos, es importante cambiar su nombre por el nombre del módulo donde está programado.
  • El nombre siempre debe ser "implements" seguido por el nombre del Hook y luego "in comentario".

Clase o interfaz del Form State

  • Es importante pasar el nombre completo donde está la clase o interfaz del Form State a la cláusula "use".
  • Se debe quitar la barra y dejar solo el nombre de la clase o interfaz.

Vaciar caché

  • Es importante vaciar la caché después de implementar un Hook en Drupal.
  • Se puede hacer desde el sitio o utilizando el comando drush cr.

Identificación del form_id de un formulario en Drupal

Resumen de la sección: En esta sección, el presentador muestra cómo identificar el form_id de un formulario en Drupal.

Ejemplo práctico

  • Si se ejecuta un formulario, se puede ver su form_id en la URL.
  • El form_id también aparece en los nombres de sistema y títulos de las páginas donde está integrado el formulario.
  • Es importante recordar que no tiene sentido modificar con hook_form_alter un formulario que pertenece al mismo módulo.

Configuración de formulario

Resumen de la sección: En esta sección, el presentador muestra cómo interceptar y modificar un formulario en Drupal. Se enfoca en cambiar el valor por defecto del primer día de la semana y hacer que el campo país sea obligatorio.

Interceptando el formulario

  • El presentador muestra cómo interceptar un formulario.
  • Cambia el valor por defecto del primer día de la semana a "lunes".
  • Hace que el campo país sea obligatorio.

Identificando el nombre del sistema

  • El presentador explica que es necesario identificar el nombre del sistema para asegurarse de que las modificaciones solo se apliquen al formulario deseado.
  • Muestra cómo usar dpm para imprimir información sobre los formularios.

Pasando variables por referencia

  • El presentador explica la diferencia entre pasar variables por valor y por referencia.
  • Explica que los objetos siempre se pasan por referencia, mientras que los valores simples como strings o integers pueden ser pasados tanto por valor como por referencia.

Localizando campos en un formulario

  • El presentador muestra cómo localizar campos dentro de un formulario.
  • Explica cómo buscar nombres de campo en el primer nivel o dentro de otros elementos.

Claves y valores en Drupal

Resumen de la sección: En esta sección, el orador muestra cómo encontrar claves y valores específicos en Drupal para hacer cambios. También explica cómo cambiar un campo a obligatorio y cómo cambiar el valor predeterminado de un campo.

Encontrar claves y valores

  • Para encontrar claves específicas en Drupal, busca los elementos dentro del array.
  • El tipo "Select" es donde se encuentra el sitio de Fall country.
  • Para cambiar un campo a obligatorio, encuentra la clave correcta dentro del array.
  • La clave local es un array que contiene otro array. Cada entrada debe ser puesta individualmente.

Cambiar campos

  • Side Force country es el elemento Select que se va a poner como requerido.
  • El siguiente campo dentro de locales es date First day, que también es un Select. El valor predeterminado es cero (domingo).
  • Si quieres cambiar el valor predeterminado, cambia la clave Ford value a 1.
  • Usa dpm antes y después para ver los cambios realizados en el sitio correcto.

Ejemplo práctico

  • Actualiza la página para ver los cambios realizados.
  • Asegúrate de hacer dpm antes y después para verificar los cambios realizados.
  • Si te equivocas al poner una clave, Drupal creará una nueva con un nombre aleatorio.

Cambiar el valor de un campo en Drupal

Resumen de la sección: En esta sección, el orador explica cómo cambiar el valor de un campo en Drupal y muestra cómo hacerlo en tiempo real.

  • Cambiar el día de la semana (por ejemplo, de lunes a miércoles) es raro porque lo que se hace es cambiarlo solo en el formulario. El valor predeterminado sigue siendo cero.
  • Si cambias el valor del formulario, pero no actualizas la configuración, cuando vuelvas a mostrar el formulario, volverá al valor predeterminado.
  • Asignar un campo como obligatorio es más normal que cambiar su valor directamente.