Я пытаюсь поместить значение в форму, созданную formbuilder, я взял значение из другого файла ветки по запросу, и я пытаюсь использовать $ form-> setData (array ('field' => value));
Контроллер кода:
public function ModifierGestionMatchAction(Request $request)
{
$id = $request->get('id');
$idmatch = $request->get('idm');
$em = $this->getDoctrine()->getManager();
$type = $em->getRepository("MainBundle:ReservationGestionStock")
->find($id);
$match = $em->getRepository("MainBundle:Match")
->findOneByid($idmatch);
$form = $this->createForm(ReservationGestionStockType::class, $type);
$form->setData(array('hotel'=>null));
$form->setData(array('match'=>$match));
$form->handleRequest($request);
if ($form->isValid()){
$em->persist($type);
$em->flush();
return $this->redirectToRoute("ReservationGestionStockAfficher");
}
return $this->render('MainBundle:GestionStock:GestionStockModifierMatch.html.twig',
array(
"form" => $form->createView(),
"match" => $match
));
}
мой код формы:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('hotel',HiddenType::class)
->add('match',HiddenType::class)
->add('nb')
->add('nbr')
->add('Valider', SubmitType::class)
->add('Reset', ResetType::class);
}
Примечание: отель и матч - это 2 объекта, у меня проблема с setData () для соответствия, я пытался установить данные idmatch, но это та же проблема, "форма недействительна"






$form->get('hotel')->setData('John');
$form->get('match')->setData($match);
Я сделал это, и это сработало, но я думаю, что это так странно ... в любом случае, спасибо всем за ответ.
if ($form->isSubmitted()) {
$gestion= new ReservationGestionStock();
$gestion->setMatch(null);
$gestion->setNb($form->getData()->getNb('nb'));
$gestion->setNbr($form->getData()->getNbr('nbr'));
$gestion->setHotel($hotel);
$em->persist($hotel);
$em->flush();
return $this->redirectToRoute("ReservationGestionStockAfficher");
}
После отправки просто сделайте это,
$type = $form->getData(); $type->setHotel($hotel); $type->setMatch($match); then persist and flush $type
Ваш конструктор форм не настроен для обработки сущностей в этих полях. Вам нужно будет изменить свой конструктор форм, используя
EntityType field, или вместо этого предоставить ему$match->getId(), однако, если вашMainBundle:ReservationGestionStock::setMatchтакже ожидает сущность,$match->getId()не будет работать, поскольку формы Symfony используют ваши установщики модели при выпускеhandleRequest.