我想通过一个定义的变量保留我的默认实体值。我通过外键连接了一些表,它们已经返回了数据库中的值。由于它们是无法更改的字段,因此只需要在数据库的新行中传递它即可。
public function ticketAddAction(Request $request, $id)
$ticket = $this->getDoctrine()
->getRepository('AppBundle:Tickets')->find($id);
$form = $this->createFormBuilder()
->add('play', EntityType::class, array(
'disabled'=> true,
'data' => $ticket->getPlay(),
'class' => Plays::class,
'choice_label' => 'playName',
'attr' => ['class' => 'form-control']
))
->add('theater', EntityType::class, array(
'disabled'=> true,
'data' => $ticket->getTheater(),
'class' => Theater::class,
'choice_label' => 'name',
'attr' => ['class' => 'form-control']
))
->add('hall', EntityType::class, array(
'disabled'=> true,
'data' => $ticket->getHall(),
'class' => Halls::class,
'choice_label' => 'hallName',
'attr' => ['class' => 'form-control']
))
->getForm();
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$data = $form->getData();
$this->container->get('tickets')->addNewTicket($ticket);
return $this->redirectToRoute('published');
}
return $this->render('@FrontTemplates/pages/ticket.html.twig', array(
'form' => $form->createView(),
'purchase' => $ticket,
));
}
在此api调用中,一切似乎都工作正常,但在下面的api调用中,我无法弄清楚如何仅使用一个变量来循环通过所有这些对象。
这是我的服务api调用。
public function addNewTicket(Tickets $ticket)
{
$newTicket = new Tickets();
foreach ($ticket as $newTicket) {
$ticket->setPlay($play);
$ticket->setTheater($theater);
$ticket->setHall($hall);
}
return $newTicket
}
我的实体信息
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Base\Entity\Plays")
* @ORM\JoinColumn(name="play_id", referencedColumnName="id")
*/
private $play;
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Base\Entity\Theater")
* @ORM\JoinColumn(name="theater_id", referencedColumnName="id")
*/
private $theater;
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Base\Entity\Halls")
* @ORM\JoinColumn(name="hall_id", referencedColumnName="id")
*/
private $hall;
答案 0 :(得分:0)
首先,您的实体名称应为单数形式,以避免像这样混淆。
在您的第一段代码中,这种形式似乎没有用。您无法使用“ $ data”变量执行任何操作。如果要将该表单链接到票证对象,则应这样调用表单构建器:$ this-> createFormBuilder($ ticket)
在第二段代码中,您尝试遍历单个对象。另外,如果您将表单正确链接到实体,则不需要“ addNewTicket”代码。
另外,请查看官方文档:https://symfony.com/doc/current/forms.html#building-the-form
这是编辑票证的完整代码:
"context": {
"array": "<? entities['spare_part'].![literal] ?>",
"array_size": "<?$array.size() ?>"
如果此代码未保存您的关系,请添加您的映射信息。也许那里有问题。