Problema al capturar los datos de un formulario personalizado en mi controlador

42 views
Skip to first unread message

Leonor Vallejos Mendez

unread,
Aug 27, 2021, 2:26:55 AM8/27/21
to symfony-es

Como capturar los valores de un elemento fuera de mi formulario en mi controlador.

  • CREE MI FORMULARIO DE LA SIGUIENTE MANERA EN MI CONTROLADOR:
sn6jJ.png
  • TRATE DE "PERSONALIZAR" LOS CAMPOS EN EL TEMPLATE DE LA SIGUIENTE FORMA:
Captura de pantalla 2021-08-27 021756.png
  • TRATO DE CAPTURARLOS DE LA SIGUIENTE FORMA EN MI CONTROLADOR:
Captura de pantalla 2021-08-27 022017.png
  • MI ERROR: Llega null a mi base de datos
Captura de pantalla 2021-08-27 022330.png
  • MI PROBLEMA:

Trato de capturar los valores de elementos fuera de formulario pre-definido y guardarlos en la base de datos

Jesús Clemente Gallart

unread,
Aug 27, 2021, 3:45:26 AM8/27/21
to symfony-es
varias cosas...
1.- ¿Porque utilizas un entityManager "$em" para cada entidad?, no hace falta.
2.- El campo de total compra, lo tienes declarado en el fichero twig como "totalc", pero lees el campo "pstock", si ese valor no se ha rellenado en el formulario, no devuelve nada, vamos que es null.
3.- Cuando construyes el formulario, puede utilizar los atributos del campo y poner el id, class y demás.
Por ejemplo ->add('total_compra', TextType::class, ['label' => 'Total Compra', 'attr'=>['id'=>'totalc', 'onclick'=>'ejecutaesto();']]);
4.- Supongo que ya lo sabes, pero con un "dump(request);" en el controlador. Puedes ver lo que te devuelve el formulario.
Por último... yo suelo poner un if en ese tipo de campos, para así, saber si informan nulo if ($request->request->get('totalc') != null) {

Te recomiendo que les en la documentación de Symfony. Ahí lo explican muy bien. 

Un cordial saludo.

Leonor Vallejos Mendez

unread,
Aug 28, 2021, 12:46:31 AM8/28/21
to symfony-es
Gracias por el dato, respecto  a las observaciones:

2. Aquí esta la cuestión, y es mi culpa por no darme a entender, mi duda es, como puedo capturar los valores de un campo que haya declarado fuera de este form:

Screenshot_1.png

Tengo el campo stock que quiero guardar en la BD y lo asigne a total_compra, solo para probar y hacer esta duda.

-> Trato de guardarlo con esto [ $salida->setTotalCompra($request->request->get('psotck'));] , pero me tira el null.

Jesús Clemente Gallart

unread,
Aug 28, 2021, 6:11:38 AM8/28/21
to symfony-es
A ver, una apreciación, en el controlador pones "psotck" no "pstock". es pero que sea eso.
Otro apunte más, puedes poner en el constructor del formulario el campo pstock, pon el atributo mapped=false;

Espero haberte ayudado.

Un cordial saludo.

Yuniel Gonzalez Nuñez

unread,
Sep 4, 2021, 9:16:35 AM9/4/21
to symfo...@googlegroups.com
Debes agregar {{ form_row( form._token) }} al inicio del formulario en la vista.
 Saludos espero resuelvas.

--
--
Has recibido este mensaje porque estás suscrito al grupo "symfony-es" de Google Groups.
Para publicar en este grupo, envía un email a symfo...@googlegroups.com
Para darte de baja, envía un email a symfony-es+...@googlegroups.com
El resto de opciones puedes encontrarlas en http://groups.google.com/group/symfony-es?hl=es

---
Has recibido este mensaje porque estás suscrito al grupo "symfony-es" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a symfony-es+...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/symfony-es/81425f01-f799-4450-aa8e-a155b7ff57e7n%40googlegroups.com.

Manuel Aguirre

unread,
Nov 16, 2021, 4:07:47 PM11/16/21
to symfony-es
Buenas,

Como recomendación final, decir que si se está usando Symfony hay que tratar de sacarle el mayor provecho a sus bondades. 

Con Symfony y sus formularios, en el 90% de los casos el proceso de pasar la data de un formulario a una entidad es totalmente automático, no hace falta estar haciendo:

$entidad->setCampo($form['campo']->getData());

Que preciso para estas cosas se usa el framework, para evitar trabajo repetitivo e innecesario.

Acá lo explican y se puede notar que en ningún momento se llama a los set de la entidad por cada campo del form, eso es automático y es precisamente el trabajo que ahorra usar Symfony.

Saludos!

Reply all
Reply to author
Forward
0 new messages