No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Fundamentos de Symfony 6

Curso de Fundamentos de Symfony 6

Profesor Italo Morales F

Profesor Italo Morales F

Form

13/17
Recursos

Aportes 6

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

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.
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'); ```
El curso está muy bueno para quién no conoce nada de symfony
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.