Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony 3使用url参数重定向到另一条路由_Symfony_Symfony Routing - Fatal编程技术网

Symfony 3使用url参数重定向到另一条路由

Symfony 3使用url参数重定向到另一条路由,symfony,symfony-routing,Symfony,Symfony Routing,在我的Symfony 3项目中,我制作了以下控制器: /** * @Route("/person_in_need/{id}",name="person_in_need_view") */ public function viewPersonInNeed(Request $request,$id) { } 我想从另一个控制器重定向到它,例如: /** * @Route("/person_in_need/add",name="

在我的Symfony 3项目中,我制作了以下控制器:

    /**
     * @Route("/person_in_need/{id}",name="person_in_need_view")
     */
    public function viewPersonInNeed(Request $request,$id)
    {

    }
我想从另一个控制器重定向到它,例如:

    /**
     * @Route("/person_in_need/add",name="add_person_in_need")
     */
    public function addPersonInNeed(Request $request)
    {
        $form=$this->createForm(PersonInNeedType::class,new PersonInNeed());

        $form->handleRequest($request);

        if ($form->isSubmitted() && $form->isValid()) {
            /**
             * @var PersonInNeedBusinessLogicModel $dataInsert
             */
            $dataInsert=$this->get('app.person_in_need_business_model');
            $name=$form->get(PersonInNeedConstats::PERSON_IN_NEED_NAME)->getData();
            $surname=$form->get(PersonInNeedConstats::PERSON_IN_NEED_SURNAME)->getData();
            $reason=$form->get(PersonInNeedConstats::PERSON_IN_NEED_REASON)->getData();
            $dataInsert->registerPersonInNeed($name,$surname,$reason);
            //Pass id there
//          return $this->redirectToRoute('person_in_need_view');
        }

        return $this->render('social_worker/add_person_in_need.html.twig',array(
            'form'=>$form->createView()                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
        ));
    }
如何使用路由名称重定向和传递
id
参数?

请参见:

这将使用301返回代码重定向到客户端:

$this->redirect(
    $this->generateUrl(
        'person_in_need_view',
        array('id' => $id)
    )
);
这将在内部重定向:

$this->forward(
    'person_in_need_view',
    array('id' => $id)
)
见:

这将使用301返回代码重定向到客户端:

$this->redirect(
    $this->generateUrl(
        'person_in_need_view',
        array('id' => $id)
    )
);
这将在内部重定向:

$this->forward(
    'person_in_need_view',
    array('id' => $id)
)

实际上,你差不多完成了;)TL;DR只需使用

return $this->redirectToRoute('person_in_need_view', ['id' => $yourEntity->getId()]);
我有点好奇为什么你要通过
$form->get(')->normData()
来获取数据,但这可能有一个原因

我希望您已经为您的
Personined
实体配置了
PersoninedType
。如果有的话,打电话就行了

if ($form->isSubmitted() && $form->isValid()) {
    /** @var PersonInNeed personInNeed **/
    $personInNeed = $form->getData();

    //at the end...after persist and flush so your entity is stored in DB and you have an ID
    return $this->redirectToRoute('person_in_need_view', ['id' => $personInNeed->getId()]);
}

实际上,你差不多完成了;)TL;DR只需使用

return $this->redirectToRoute('person_in_need_view', ['id' => $yourEntity->getId()]);
我有点好奇为什么你要通过
$form->get(')->normData()
来获取数据,但这可能有一个原因

我希望您已经为您的
Personined
实体配置了
PersoninedType
。如果有的话,打电话就行了

if ($form->isSubmitted() && $form->isValid()) {
    /** @var PersonInNeed personInNeed **/
    $personInNeed = $form->getData();

    //at the end...after persist and flush so your entity is stored in DB and you have an ID
    return $this->redirectToRoute('person_in_need_view', ['id' => $personInNeed->getId()]);
}