【发布时间】:2017-06-15 13:14:43
【问题描述】:
我想为我的所有同名事件更新 StartDate 和 EndDate(在我的例子中,多个事件同名)
从组合框中选择事件的名称,然后选择要更新的开始日期和结束日期
updateEvents.html.twig
{{ form_start(form}}
<div>
<label for="name">Name of the event</label>
<div > {{ form_widget(form.name}} </div>
</div>
<div >
<label for="startDate ">Start date </label>
<div > {{ form_widget(form.startDate }} </div>
</div>
<div>
<label for=" EndDate ">End date </label>
<div> {{ form_widget(form. endDate}} </div>
</div>
<div>
<button type="submit" ">Update</button>
</div>
</div>
{{ form_end(form) }}
UpdateEventsType.php:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add(' name ',EntityType::class,array(
'class' => 'AppBundle: Event', 'choice_label'=>'name') )
->add(' startDate ', DateType::class, array(
'widget' => 'single_text',
// this is actually the default format for single_text
'format' => 'yyyy-MM-dd'))
->add(' endDate ', DateType::class, array(
'widget' => 'single_text',
// this is actually the default format for single_text
'format' => 'yyyy-MM-dd'))
;
}
控制器:
public function updateEventsAction(Request $request )
{
//how to recuperate $choosedName from the combobox????
$qb = $this->getDoctrine()->getManager()->createQueryBuilder();
$qb->select('e')
->from('AppBundle:Event', 'e')
->where('e.name = :choosedName')
->setParameter('name',$choosedName);
$events = $qb->getQuery()->getResult();
$form = $this->createForm('AppBundle\Form\UpdateEventsType', $events);
foreach ($events as $event) {
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$event ->setStartDate ($event ->getStartDate ());
$event ->setEndDate ($event ->getEndDate ());
$em->flush();
return $this->redirectToRoute('app_event');
}
return $this->render('AppBundle:Event:updateEvents.html.twig', array(
'form' => $form->createView(),
));
}
}
}
【问题讨论】:
-
这里有什么问题?错误消息或者您只需要知道如何获取 $choosedName ?
标签: database symfony doctrine twig