Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

142
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!