Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

145
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda