Nuevo en Symfony 3.4: el comando debug:form

Una de las mejores características de Symfony es la gran cantidad de herramientas que proporciona para depurar aplicaciones. En Symfony 3.4 hemos decidido mejorarlas añadiendo una herramienta más: el comando debug:form para depurar formularios.

Si ejecutas ese comando sin argumentos, se muestran todos los "form types" que incluye Symfony, todos los que define tu aplicación, las extensiones de formulario y los "guessers". Por ejemplo, al ejecutarlo en la aplicación Symfony Demo:

$ ./bin/console debug:form
 
Built-in form types (Symfony\Component\Form\Extension\Core\Type)
----------------------------------------------------------------
 BirthdayType, ButtonType, CheckboxType, ChoiceType, CollectionType
 ColorType, CountryType, CurrencyType, DateIntervalType, DateTimeType
 ...
 TextareaType, TimeType, TimezoneType, UrlType
 
Service form types
------------------
 * App\Form\CommentType
 * App\Form\PostType
 * App\Form\Type\DateTimePickerType
 * App\Form\Type\TagsInputType
 * Symfony\Bridge\Doctrine\Form\Type\EntityType
 
Type extensions
---------------
 * Symfony\Component\Form\Extension\Csrf\Type\FormTypeCsrfExtension
 * Symfony\Component\Form\Extension\DataCollector\Type\DataCollectorTypeExtension
 * ...
 * Symfony\Component\Form\Extension\Validator\Type\UploadValidatorExtension
 
Type guessers
-------------
 * Symfony\Bridge\Doctrine\Form\DoctrineOrmTypeGuesser
 * Symfony\Component\Form\Extension\Validator\ValidatorTypeGuesser

Si pasas un "form type" como argumento, se muestran todas sus opciones, incluyendo las de las clases de las que hereda y las de sus extensiones:

$ ./bin/console debug:form 'App\Form\PostType'
 
# si la clase del "form type" no es ambigua, puedes usarla directamente
# en vez de tener que escribir su namespace completo:
# ./bin/console debug:form PostType
 
App\Form\PostType (Block prefix: "post")
========================================
 
 -------------------- ------------------------- ----------------------------
  Overridden options   Parent options            Extension options
 -------------------- ------------------------- ----------------------------
  FormType             FormType                  FormTypeValidatorExtension
 -------------------- ------------------------- ----------------------------
  data_class           action                    allow_extra_fields
                       attr                      constraints
                       auto_initialize           error_mapping
                       block_name                extra_fields_message
                       by_reference              invalid_message
                       compound                  invalid_message_parameters
                       data                      validation_groups
                       disabled
                       empty_data                FormTypeCsrfExtension
                       error_bubbling           ----------------------------
                       inherit_data              csrf_field_name
                       label                     csrf_message
                       label_attr                csrf_protection
                       label_format              csrf_token_id
                       mapped                    csrf_token_manager
                       method
                       post_max_size_message
                       property_path
                       required
                       translation_domain
                       trim
                       upload_max_size_message
 -------------------- ------------------------- ----------------------------
 
Parent types
------------
 
 * Symfony\Component\Form\Extension\Core\Type\FormType
 
Type extensions
---------------
 
 * Symfony\Component\Form\Extension\HttpFoundation\Type\FormTypeHttpFoundationExtension
 * Symfony\Component\Form\Extension\Validator\Type\FormTypeValidatorExtension
 * Symfony\Component\Form\Extension\Validator\Type\UploadValidatorExtension
 * Symfony\Component\Form\Extension\Csrf\Type\FormTypeCsrfExtension
 * Symfony\Component\Form\Extension\DataCollector\Type\DataCollectorTypeExtension

Por último, si pasas tanto un "form type" como el nombre de una opción, el comando muestra la definición completa de esa opción:

$ ./bin/console debug:form 'App\Form\PostType' label_attr
 
App\Form\PostType (label_attr)
==============================
 
 ---------------- -----------
  Required         false
 ---------------- -----------
  Default          []
 ---------------- -----------
  Allowed types    ["array"]
 ---------------- -----------
  Allowed values   -
 ---------------- -----------
  Normalizer       -
 ---------------- -----------

Como sucede con muchos otros comandos de Symfony, toda esta información también está disponible en formato JSON añadiendo la opción --format=json al ejecutar el comando.

Esta funcionalidad fue contribuida por Yonel Ceruto y Maxime Steinhausser en los pull requests #23694, #24185 y #24208.

Fuente: New in Symfony 3.4: debug:form command

Comentarios

Publicada el

17 de octubre de 2017

Etiquetas

Proyectos Symfony destacados

La plataforma de eCommerce 100% Symfony que rivaliza con Magento y PrestaShop. Ver más

Síguenos en @symfony_es para acceder a las últimas noticias.