You don't have access to this class

Keep learning! Join and start boosting your career

Aprovecha el precio especial y haz tu profesi贸n a prueba de IA

Antes: $249

Currency
$209
Suscr铆bete

Termina en:

2 D铆as
11 Hrs
32 Min
44 Seg
Curso de Fundamentos de Symfony 6

Curso de Fundamentos de Symfony 6

Profesor Italo Morales F

Profesor Italo Morales F

Form

13/17
Resources

Contributions 7

Questions 0

Sort by:

Want to see more contributions, questions and answers from the community?

composer require symfony/form
php bin/console make:form

Se crea en src/Form.

Form

Cuando se trabaja con aplicaciones web, los formularios son una pieza esencial para recopilar datos del usuario. Symfony ofrece un potente componente de formularios que simplifica esta tarea.

  1. Instalaci贸n:
    Symfony no viene con el componente de formularios por defecto. Por lo tanto, primero necesitas instalarlo usando composer:composer require symfony/form
  2. Creaci贸n del Formulario:
    Symfony proporciona un comando para crear r谩pidamente clases de formularios:
  • php bin/console make:form Esta acci贸n crear谩 un nuevo archivo en src/Form/, en este caso CommentType.php, que representa la estructura del formulario relacionado con la entidad Comment.
  1. Controlador:
    En el controlador PageController, creamos y manejando el formulario:
    • Creaci贸n: $form = $this->createForm(CommentType::class);
    • Manejo: $form->handleRequest($request); maneja la solicitud y llena el formulario con los datos enviados en la solicitud.
    • Si el formulario es enviado y es v谩lido, se guarda el comentario en la base de datos usando el EntityManager.
  2. Clase del Formulario:
    En CommentType.php, definimos la estructura y configuraci贸n del formulario.
    • buildForm: Aqu铆 definimos los campos del formulario, sus tipos y opciones.
    • configureOptions: Establecemos opciones para el formulario, como la clase de datos con la que est谩 asociado ('data_class' => Comment::class).
  3. Vista:
    En el archivo twig, mostramos el formulario y los comentarios:
    • Mostrar el formulario: {{ form(form) }} renderiza el formulario que hemos creado en el controlador.
El curso est谩 muy bueno para qui茅n no conoce nada de symfony
Reconozco que la curva de aprendizaje de Symfony es bastante alta, **veo que es muy verboso**. Este tema de formularios puede ser complejo para una persona nueva y sin experiencia previa con esta clase de frameworks. Gracias a que **el profesor explica muy bien** las cosas y es organizado con el c贸digo se puede entender la pasolog铆a para crear los formularios.
Finalizando el ejercicio, al intentar guardar los datos symfony me devolvia `Unable to generate a URL for the named route "home" as such route does not exist` La raz贸n es el metodo `redirectToRoute()` recibe como parametro el `name` de la ruta no la ruta como tal, en mi caso estaba declarando la ruta: ```txt #[Route('/home', name: 'app_home')] ``` Por tanto redirectToRoute() debe ser: ```txt return $this->redirectToRoute('app_home'); ```
En mi caso cree una Entity llamada User y a los Comments le agregu茅 un campo referencial a los usuarios para identificar de quien es cada uno. Al hacer el Form me top茅 con que el campo para agregar un User daba error y tuve que darle esta configuraci贸n y lo solucion茅: `// Primero agregar las clases que se usan en este bloque` `use App\Entity\User;` `use Symfony\Bridge\Doctrine\Form\Type\EntityType;` ```js public function buildForm(FormBuilderInterface $builder, array $options): void { $builder ->add('body', TextareaType::class, [ 'help' => "Puedes escribir en Markdown", 'label' => 'Comentario, tips, etc...', 'attr' => ['rows' => 7] ]) ->add('user', EntityType::class, [ 'class' => User::class, // Reemplaza 'User' por la entidad real de tus usuarios 'choice_label' => 'username', // Reemplaza 'username' por el campo que deseas mostrar en la lista de selecci贸n 'label' => 'Usuario', // Etiqueta para el campo de selecci贸n 'placeholder' => 'Selecciona un usuario', // Texto por defecto en la lista de selecci贸n ]) ->add('Guardar', SubmitType::class); } ``` Y se ve bien bonito!

a mi me arrojaba el siguiente error

Service "form.factory" not found: the container inside "App\Controller\PageController" is a smaller service locator that only knows about the "http_kernel", "parameter_bag", "request_stack", "router" and "twig" services.

y era por que ejecute el comando se la siguiente manera:

composer require --dev symfony/form

Lo ejecute nuevamente pero sin el --dev le dije que yes a la pregunta y soluciono mi problema por si le pasa algo similar a alguien.