2012-01-07 72 views
1

時如何發送數據我從數據庫中獲取一個對象,然後我想打一個重定向到另一個控制器和發送那裏對象:symfony的2重定向

$user = $this->getDoctrine()->getRepository('ShopMyShopBundle:Register')->find($id); 

return $this->redirect($this->generateUrl('ShopMyShopBundle_homepage'), array('user' => $user)); 

我怎樣才能得到後一個對象重定向併發送到其他控制器功能中的模板,如下所示:

public function indexAction() 
{ 
    return $this->render('ShopMyShopBundle:Main:index.html.twig'); 
} 

回答

3

您無法通過重定向發送對象。你可以做的是發送它的一個獨特的屬性(可能是主鍵)並再次從數據庫中獲取它。在你的情況下,它可能是一個用戶ID或暱稱。

/** 
* @Route("/shop/{nickname}", name="shop_index") 
*/ 
public function indexAction(User $user) 
{ 
    // ... 
} 

得益於類型提示時,用戶將被從數據庫automatically通過其暱稱獲取。

+0

如何將$ user變量發送到模板。我有&user = $ this-> getDoctrine() - > getRepository('ShopMyShopBundle:Register') - > find($ id);然後我想這樣做:return $ this-> render('ShopMyShopBundle:Main:register.html.twig',array('form'=> $ form-> createView(),'user'=> $用戶));但我得到一個錯誤「注意:未定義的變量:用戶在...」 – user1052836 2012-01-07 19:34:48

+0

這需要SensioFrameworkExtraBundle,順便說一句。 – 2012-01-08 04:07:50

+0

我發現了一個錯誤,也許你錯了理解我。我忘了使用EntityManager。現在我有:$ em = $ this-> getDoctrine() - > getEntityManager(); $ user = $ em-> getRepository('ShopMyShopBundle:Register') - > find($ id);返回$ this-> render('ShopMyShopBundle:Main:register.html.twig',array('form'=> $ form-> createView(),'user'=> $ user));並在模板中可以使用{{user.login}}; – user1052836 2012-01-08 15:24:11