Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

146
Vistas
El formulario se envía con "nulo", pero se objetará después de enviarlo

Después de horas de depurar el vendor/symfony/form/Form completo, solo pude descubrir que FormEvents::SUBMIT convierte mi valor null en Object .

Este es mi código.

 $form = $this->createForm(PersonType::class, new Person()); $form->submit($request->request->all(), false); if ($form->isSubmitted() && $form->isValid()) { $em->persist($entity); $em->flush(); return $entity; } return $form->getErrors(true, true);

Entonces envío esta solicitud.

 POST /api/persons/e3d90966-b2e7-4503-959f-da989c73c185 { "name": {"firstName": "John", "lastName": "Doe"} }

Establece el nombre de la persona en John Doe .

Ahora quiero aclararlo:

 POST /api/persons/e3d90966-b2e7-4503-959f-da989c73c185 { "name": null }

Y et voilà: El nombre sigue siendo John Doe .

Estoy usando un tipo personalizado:

 class NameType extends AbstractType { private EntityManagerInterface $manager; public function __construct(EntityManagerInterface $manager) { $this->manager = $manager; } public function buildForm(FormBuilderInterface $builder, array $options) { parent::buildForm($builder, $options); $builder ->add('firstName', TextType::class) ->add('lastName', TextType::class) ; $builder->addModelTransformer(new NameTransformer($this->manager)); } public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults([ 'data_class' => Name::class, 'compound' => true ]); } }

Y se utiliza a través de:

 $builder ->add('name', NameType::class) ;

Algunas informaciones más:

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Si estás publicando

 { "name": null }

Ese es el formulario principal que está vacío, por lo que sin los campos del formulario secundario no ha pasado ningún valor para los campos ni los campos en sí. No envía un nuevo valor para los campos, por lo que no se cambia nada.
Creo que debe establecer explícitamente cada uno de los valores de campo individuales en null para que esto funcione. Uno de los siguientes ejemplos debería hacer el truco:

 POST /api/persons/e3d90966-b2e7-4503-959f-da989c73c185 { "name": {"firstName": null, "lastName": null} }

o

 POST /api/persons/e3d90966-b2e7-4503-959f-da989c73c185 { "name": {"firstName": "", "lastName": ""} }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda