2017-05-13 40 views
0

在我的Symfony 3項目,我已經做了以下位指示:Symfony的3重定向到具有URL參數另一個routhe

/** 
    * @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參數?

回答

1

Actualy你快要完成)TL ; DR只是使用

return $this->redirectToRoute('person_in_need_view', ['id' => $yourEntity->getId()]); 

我有點好奇,爲什麼你會得到通過$form->get('<FIELD_NAME>)->normData()數據,但有是一個posibly RESON爲...

我希望你配置了PersonInNeedTypePersonInNeed實體。如果是這樣,請致電

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()]); 
} 
2

Link

這重定向使用301返回碼到客戶端:

$this->redirect(
    $this->generateUrl(
     'person_in_need_view', 
     array('id' => $id) 
    ) 
); 

該內部重定向:

$this->forward(
    'person_in_need_view', 
    array('id' => $id) 
) 
相關問題