2016-10-28 67 views
0

Maby一個愚蠢的問題,但我沒有看到它。Symfony3更新表單不起作用

我想改變我的表格中的數據,這個表格包含了其他實體之間的關係。 在創建新項目時,更新功能將不起作用

當我在$ form-> getData()上進行var轉儲時,我的瀏覽器會崩潰。

在form-> isValid裏我的var_dump沒有顯示任何東西。

另外我試過$ em-> merge選項,結果相同。

非常感謝!

編輯功能

/** 
* @Route("/user/item/edit/{id}") 
*/ 
public function editItemAction($id, Request $request) 
{ 
    $em = $this->getDoctrine()->getManager(); 
    $item = $em->getRepository('AppBundle:Item')->find($id); 

    if (!$item){ 
     return $this->redirect('/user/item'); 
    } 

    $form = $this->createForm(ItemType::class, $item); 

    if ($form->isSubmitted() && $form->isValid()){ 
     $data = $form->getData(); 

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

     return $this->redirect('/user/item'); 
    } 

    return $this->render('admin/item/edit.html.twig', [ 
     'form' => $form->createView() 
    ]); 
} 

表格類型

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
    ->add('category', EntityType::class, array(
    'class' => 'AppBundle:Category', 
    'choice_label' => function ($category) { 
     return $category->getName(); 
    })) 
    ->add('title', TextType::class) 
    ->add('shortText', TextType::class) 
    ->add('text', TextType::class) 
    ->add('link', TextType::class) 
    ->add('active', CheckboxType::class, [ 
     'required' => false 
    ]) 
    ->add('imageId', TextType::class) 
    ->add('Submit', SubmitType::class) 
    ->getForm(); 
} 

的包括

use AppBundle\Entity\Category; 
use AppBundle\Entity\Item; 
use AppBundle\Form\ItemType; 
use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 
use Symfony\Component\HttpFoundation\Request; 
use Symfony\Component\HttpFoundation\Response; 
use Doctrine\ORM\EntityRepository; 

回答

4

你必須處理請求與您的表格,否則$form->isSubmitted()將始終返回false。所以這行之後:

$form = $this->createForm(ItemType::class, $item); 

必須添加:

$form->handleRequest($request); 
+0

非常感謝,我是對的,這是一個愚蠢的問題:) –