2017-06-15 68 views
0

我想更新开始日期和结束日期为具有相同名称的所有我的事件(在我的情况下,多个事件具有相同的名称)更新我的所有对象

选择事件的名称然后形成一个组合框中选择的开始和结束日期更新

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(), 
    )); 
    } 
} 
    } 
+0

什么不工作在这里吗?错误消息或您只需要知道如何获得$ choosedName? –

回答

0

你必须做你的行为形式submited

public function updateEventsAction(Request $request) 
     { 

      $form = $this->createForm('AppBundle\Form\ UpdateEventsType ', $ events);  
      $form->handleRequest($request); 
      if ($form->isSubmitted() && $form->isValid()) { 
       $em = $this->getDoctrine()->getManager(); 
       $choosedName = $form->getData()['name']; 
       $qb = $this->getDoctrine()->getManager()->createQueryBuilder(); 
       $qb->select('e')->from('AppBundle:Event, 'e')->where('e.name = :choosedName')->setParameter(':choosedName',$choosedName); 
       $events = $qb->getQuery()->getResult(); 
       foreach ($events as $ event) { 
        $event ->setStartDate ($event ->getStartDate()); 
        $event ->setEndDate ($event ->getEndDate()); 
        $em->persist($event); 
       } 
       $em->flush(); 
       return $this->redirectToRoute('app_event'); 
      } 

      return $this->render('AppBundle:Event:updateEvents.html.twig', array(
       'form' => $form->createView(), 
      )); 
      } 
     } 
    } 

有很多在你的代码mystakes后: - 中persit失踪 - createQueryBuilder应该在存储库中完成 - 您的 - >的setParameter(“名称”,$ choosedName)不同步与您五世说什么你在那里

阅读更多的文档,以避免所有的公益错误