php symfony控制器在调用id时不会获取id而是对象

时间:2017-10-31 23:08:43

标签: php symfony

我有一个提交的表单,我通过控制器解析数据。

我想提取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

提前感谢您的帮助

2 个答案:

答案 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();返回完整的对象仍然不是真的理解为真诚... 如果有人能够解释,即使我找到了我最初问题的解决方案,我也会很乐意批准你的答案:)