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;
答案 0 :(得分:4)
您必须使用表单处理请求,否则$form->isSubmitted()
将始终返回false。所以在这一行之后:
$form = $this->createForm(ItemType::class, $item);
你必须添加:
$form->handleRequest($request);