我有一个提交的表单,我通过控制器解析数据。
我想提取ID以将其传递给我的路线并删除该相关项目。 我使用form-> getData(),当我传递我赋予此form-> getData()的变量时,它返回一条错误消息(警告:preg_match()期望参数2为字符串,给定对象).. 。,这是我的控制器:
public function newGroupAction(Request $request)
{
$group = new TricksGroup();
$form = $this->createForm(TricksGroupType::class, $group);
$form->handleRequest($request);
这是问题:
**if($form->getClickedButton() && 'Remove' === $form->getClickedButton()->getName()) {
$id = $form->get('groupId')->getData();
dump($id);
return $this->redirectToRoute('oc_prep_delgroup', array('id' => $id));**
}
这里很好,问题是上面的代码
if ($form->isSubmitted() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($group);
$em->flush();
$this->addFlash('success', 'Group created successfully!');
return $this->redirectToRoute('oc_prep_add');
}
return $this->render('OCPrepBundle:Default:newgroup.html.twig', [
'form' => $form->createView(),
]);
}
我转储$ id以查看它带来了什么,确实将对象分配给它...而我只想要这个id: here is the print screen
提前感谢您的帮助
答案 0 :(得分:0)
表单getData方法应该返回表单的提交值,因此你需要为id调用getter ......以下内容:
$id = $form->getData()->getGroupId();
答案 1 :(得分:0)
好吧所以我在这里找到了解决方案。 我首先必须调用方法$ form-> getData() - > getGroupId(); 并将其传递给数组:
$ id [] = $ form-> getData() - > getGroupId();
然后我遍历数组以获取我正在寻找的groupId的值,然后我在路由中传递结果以生成相关的URL。
if($form->getClickedButton() && 'Remove' === $form->getClickedButton()->getName()) {
if (!$form->isSubmitted() || !$form->isValid()){
$this->addFlash('error', 'Invalid form please try again!');
}
$id[] = $form->getData()->getGroupId();
foreach ($id as $idreturned){
$x = $idreturned->getGroupId();
}
return $this->redirectToRoute('oc_prep_delgroup', array('id' => $x));
}
现在,如果有人想要优化它,我会很高兴收到你的来信。 但这很奇怪,虽然这个$ form-> getData() - > getGroupId();返回完整的对象仍然不是真的理解为真诚... 如果有人能够解释,即使我找到了我最初问题的解决方案,我也会很乐意批准你的答案:)