Symfony3更新表单不起作用

时间:2016-10-28 12:15:19

标签: php forms symfony

Maby是一个愚蠢的问题,但我没有看到它。

我想从我的表单中更改数据,此表单包含其他实体之间的关系'。 在创建新项目时,更新功能无法正常工作

当我在$ form-> getData()上执行var转储时我的浏览器会崩溃。

在form-> isValid中,我的var_dump不会显示任何内容。

此外,我尝试了$ em->合并选项,结果相同。

非常感谢!

修改功能

 /**
 * @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;

1 个答案:

答案 0 :(得分:4)

您必须使用表单处理请求,否则$form->isSubmitted()将始终返回false。所以在这一行之后:

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

你必须添加:

$form->handleRequest($request);