2013-08-07 6 views
1

Я застрял с утра с обновлением сущности. Не знаю, что мне не хватает, уверен, что это ошибка новичка.Обновление symfony doctrine из формы

Я просто пытаюсь что-то обновить через форму.

Контроллер:

public function editAction($pid, $plid, Request $request) 
{ 
    $plan = new Plan(); 
    $form = $this->createForm(new PlanType(), $plan); 

    $plan = $this->getDoctrine()->getRepository('QArthFrameworkBundle:Plan')->findOneByPlid($plid); 
    $project = $this->getDoctrine()->getRepository('QArthFrameworkBundle:Project')->findOneByPid($pid); 

    $form->handleRequest($request); 
    if ($request->getMethod() == 'POST') { 

      $em = $this->getDoctrine()->getManager(); 
      $em->flush(); 

      return $this->redirect($this->generateUrl('qarth_framework_plan_edit', array('pid' => $pid, 'plid' => $plid))); 
    } 

    return $this->render('QArthFrameworkBundle:Pages:plan_edit.html.twig', array(
     'plan' => $plan, 
     'project' => $project, 
     'form' => $form->createView(), 
    )); 
} 

Форма:

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder->add('name'); 
    $builder->add('description', 'textarea'); 
} 

лицо: http://pastebin.com/bTqKehyQ

С профилировщиком я могу видеть, что мои почтовые параметры хорошо размещены

plan {"name":"fsggsfgsf","description":"gsfgsfgsf","_token":"7d089aca0203c60fe1e617488e532ac966101440"} 

Но я не вижу никаких следов запроса на обновление или что-то еще. Если у вас есть идея, это будет здорово!

Большое спасибо,

Бен

+1

Вы пропускаете 'сохраняется()' вызов: '$ em-> сохраняются ($ плана)' перед смывом – cheesemacfly

+0

у меня такое же поведение с вызовом сохраняется(). – benarth

ответ

0

нужно передать запрошенное план в форме.

public function editAction($pid, $plid, Request $request) 
{ 
    $plan = $this->getDoctrine()->getRepository('QArthFrameworkBundle:Plan')->findOneByPlid($plid); 
    $project = $this->getDoctrine()->getRepository('QArthFrameworkBundle:Project')->findOneByPid($pid); 

// Create a new one if not found 
if (!$plan) $plan = new Plan(); 

// Build your form using queried or new plan 
$form = $this->createForm(new PlanType(), $plan); 

$form->handleRequest($request); 

// Checks for POST as well as validity 
if ($form->isValid()) { 

     $em = $this->getDoctrine()->getManager(); 
     $em->persist($plan); // To handle new plans, no impact for existting plans 
     $em->flush(); 

// Rest is the same