Formularios en Symfony 2

Trabajar con formularios es una de las tareas mas comunes dentro de una aplicación web y para ello Symfony viene integrado con el Form Component que es justamente un componente que nos será bastante útil para crear formularios de manera muy fácil. Este Form Component es una biblioteca independiente que se puede utilizar fuera de los proyectos desarrollados en Symfony así es que puedes también implementarlos en proyectos que no requieran de todo el framework.

En esta nueva lección del curso de Symfony 2 vamos aprender desde cero a crear nuestros propios formularios y para ello vamos a seguir trabajando en nuestro proyecto de asignaciones y en concreto el módulo de usuarios. Para poner en practica la creación y manejo de formularios vamos a desarrollar la funcionalidad para agregar nuevos usuarios dentro de nuestra aplicación implementando también la persistencia de los datos con Doctrine. Dentro de la terminal y con la ayuda de un comando vamos a crear una clase UserType el cual determinará cada uno de los campos que contendrá nuestro formulario. Adicionalmente vamos a conocer el concepto Lifecycle Callbacks para trabajar con eventos y manipular los campos de fechas al momento de persistir los datos de cada uno de los usuarios. Finalmente vamos aprender a encriptar las contraseñas de los usuarios en base al algoritmo bcrypt que implementa el sistema de seguridad de Symfony.

Sin más te dejo con el video donde te hablo de todo lo mencionado anteriormente y otras características más puestas a la práctica:

Ahora dime tu, qué te pareció el trabajo con formularios en Symfony? al principio puede aparentar ser un proceso relativamente largo con la creación de archivos independientes que manejen los formularios pero la potencialidad de trabajarlo de esa manera lo puedes apreciar de mejor forma cuando el proyecto en el que estas trabajando va creciendo y la misma flexibilidad y modularidad que implementa el framework va mantener tu código mucho mas ordenado. Quisiera por favor que me cuentes acá abajo en la caja de comentarios la experiencia que tuviste con esta lección de verdad que me gustaría saberlo y si esta lección te pareció interesante no dudes en compartirlo en las redes sociales. Como siempre al final de la lección te dejo el enlace al repositorio oficial del curso para que así vayas siguiendo todos los avances y cambios que se realice a lo largo del curso 8-)

Sigue todas las lecciones del curso AQUÍ.

Saludos!!!

Repositorio oficial.

firma emm

23 respuestas a «Formularios en Symfony 2»

  1. Buenas tardes Edson, mi nombre es Roberto Martín y estou siguiendo el curso de Symfony 2. y concretamente en este caípulo me lanza el suiguiente error cuando quiero ir a la página /user/create

    «Expected argument of type «string», «RMPUserBundleFormUserType» given 500 Internal Server Error – UnexpectedTypeException»

    ¿Sabrías indicarme?

    Por cierto, muy buen tutorial!!!!

    1. Hola Roberto, puede existir la posibilidad de que algo ande mal en la creación del formulario, revisaste el repositorio del proyecto que comparto a final de la lección? . Disculpa el retraso en responder, lo que pasa es que actualmente estoy pasando por un fuerte resfrio. Saludos!

  2. Edson, tu tutorial es de calidad, muchas gracias por dedicar tu tiempo a enseñar, tengo el mismo problema de Expected argument of type «string», «LCUserBundleFormUserType» given y no encuentro la solucion, tambien estoy usando Symfony 3.0.2 … Agradeceré mucho tu ayuda ya que estoy estancado ahi. Saludos

      1. Hola Edson, estoy con el mismo problema he leido la documentacion pero no encuentro el error. me podrias ayudar como es? muchas gracias.

  3. Hola Edson,

    Soy brasileño. Estoy disfrutando mucho de su curso; Felicidades por la iniciativa de haber creado este curso.

    Llegué a esta clase y ha dado el siguiente error: «Aviso: El objeto de la clase Doctrine ORM EntityManager No se pudo convertir a int.»

    No he podido encontrar dónde está el error, si usted me puede ayudar muchas gracias.

    ASAP Lo siento por la traducción.

    ¡Un fuerte abrazo!

    _______________________________________________________________________________________________

    Olá Edson,

    Eu sou brasileiro. Estou gostando muito do seu curso; parabéns pela iniciativa em ter criado esse curso.

    Eu cheguei nesta aula e tem dado o seguinte erro: «Notice: Object of class DoctrineORMEntityManager could not be converted to int».

    Não consegui encontrar onde está o erro, se puder me ajudar agradeço muito.

    Asap Desculpe pela tradução.

    Um forte abraço!

    1. Hola Raphael, eso te sucede al crear la entidad? o al crear un nuevo registro? si es por lo último mencionado puedes apoyarte del repositorio del proyecto en GitHub que comparto al final de la lección. Saludos.

  4. Hola Edson,
    Estoy siguiendo tu curso pero intentando adaptarlo a Symfony 3, y aunque he puesto en la clase User los metodos para que se inserte la fecha automáticamente no funciona. Me sigue indicando que los campos created_at y updated_at no pueden ser null

      1. Muchísimas gracias!!! La función que usé fue:
        public function __construct($environment, $debug)
        {
        date_default_timezone_set( ‘America/buenos_aires’ );
        parent::__construct($environment, $debug);
        }

        Por si a alguien más le sirve!!! Anduvo a la perfección!

  5. Buenas tardes
    Te escribo en este foro ya que en youtube no tuve respuesta

    tengo una pregunta, en la documentacion aparece distinto de como lo haces como por ejemplo
    add(‘email’,’email’) pero en la documentacion 2.7 de symfony no aparece
    https://symfony.com/doc/2.7/reference/forms/types/email.html
    como lograste deducir que era
    add(‘email’,’email’) ??

    En la documentacion no encuentro eso
    Esto tambien puedo verlo con otros campos como choice,password,checkbox y otros. Podrias darme la referencia exacta de la documentacion de symfony donde conseguiste esa informacion. Es que siempre mencionas la documentacion de symfony, la documentacion, la documentacion esto lo pueden ver esta todo claro. Sin embargo cuando revise el login en la documentacion fue muy confuso para mi ya que la informacion estaba por pedazos es decir «contruir el login tradicional» pero no decian como hacerlo desde una base de datos,luego aparecia ahi mismo «este capitulo explica cargar los datos si ya tienes la entidad usuarios,» luego ahi aparecia como cargarlos desde la base de datos pero esa informacion no me cuadraba con la otra que era «contruye el login tradicional», eso es basicamente un pedazo aqui , otro pedazo que al unir los pedazos no concuerdan entre ellos. No es como los templates que ahi explican todo como cargar hojas de estilo y javascript ademas la plantilla maestra, no esta por pedazos confusos para mi. En la documentacion intente aprender pero solo me sirve de referencia y por eso decidi ver los videos, no es lo mismo ver estos videos que la documentacion, ya que en estos videos se enfoca en crear un proyecto y como debe de ser el orden que normalmente se hace para desarrollar app web

    Gracias
    Quedo atento

    1. Hola Sebastian, primeramente si no tuviste respuesta en YouTube no es porque no quise responder, simplemente que hay ocasiones en los que tengo varios comentarios que responder y así mismo se me escapan algunos y revisar una y otra vez si respondí a todos es un tiempo que se me hace imposible invertir. Tal como lo menciono en los videos todo lo explicado está basado en la documentación del framework e incluso en varias situaciones yo mismo muestro el enlace y la parte específica en la que se encuentra el tema que se está tratando, si a ti no te cuadra lo que ves en el video puedes utilizar lo que ves en la documentación y si eso te funciona pues está bien, como te menciono ahora mismo mostrarte campo por campo los formularios y la referencia en la documentación es algo tedioso porque al final llegaremos al mismo punto que es la documentación http://symfony.com/doc/2.7/forms.html . Ya para finalizar si a ti la documentación no te parece completa por como mencionas que solo te muestra pedazos y solo pedazos de código pues lo siento porque nadie te va poner todo hecho mas al contrario parte de ti investigar: hay foros, stackoverflow o varios blogs buenísimos que comparten información sobre este framework. Disculpa si no puedo ayudarte más ya que sobre todo ahora ando bastante limitado de tiempo, de todas maneras gracias por seguir mi trabajo. Saludos.

      1. Hola como estas

        A entonces eso quiere decir que no todo está en la documentación como dices siempre jajajja. Yo he buscado en otras partes como puedes ver que estoy viendo tus vídeos esa es una de las cosas que encontré buscando , hay foros q también aparece algo y starflow. Aquí explicas mejor que symfony y no por pedasos.
        Saludos
        Feliz navidad

        El dic 18, 2016 8:41 p. m., «Disqus» escribió:

      2. Es que me había confundido con lo que dices siempre que todo está en la documentación, entonces creía q con solo eso podía hacer cualquier cosa como el login sin problemas y no tenía que buscar en otra parte.

        El dic 18, 2016 8:56 p. m., «Sebastian Torres» escribió:

  6. Hola Edson, estoy por este video y seguí los pasos uno por uno. Pero igualmente me da un error, cuando quiero codificar el password, me dice que no sabe que hacer con la palabra «encoders» Sabes porque puede ser? Te copio el error textual:

    There
    is no extension able to load the configuration for «encoders» (in
    /var/www/html/asignaciones/app/config/security.yml). Looked for
    namespace «encoders», found «framework», «security», «twig», «monolog»,
    «swiftmailer», «assetic», «doctrine», «sensio_framework_extra»,
    «emm_user», «debug», «web_profiler», «sensio_distribution» in
    /var/www/html/asignaciones/app/config/security.yml (which is being
    imported from «/var/www/html/asignaciones/app/config/config.yml»).

    Gracias!!!

  7. Ya encontre el conflicto!!! Te lo escribo para tener en cuenta:

    En security.yml cuando se pone el código:

    encoders:
    EMMUserBundleEntityUser:
    algorithm: bcrypt
    cost: 12

    Hay que ponerlo con el mismo margen que tiene «firewalls» si se pone al principio sin margen, como lo habia hecho yo, no lo toma como que está dentro de security: y da el error que antes te comente.

    Saludos y sigo con los videos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *