2012-01-07 2 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

Вы не можете отправить объект через редирект. Что вы можете сделать, это отправить одно из своих уникальных свойств (возможно, первичный ключ) и снова извлечь его из базы данных. В вашем случае это может быть идентификатор пользователя или псевдоним.

/** 
* @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

+0

Для этого требуется SensioFrameworkExtraBundle, кстати. –

+0

Я нашел ошибку, может быть, вы неправильно поняли меня. Я забыл использовать EntityManager. Теперь у меня есть: $ em = $ this-> getDoctrine() -> getEntityManager(); $ user = $ em-> getRepository ('ShopMyShopBundle: Register') -> find ($ id); return $ this-> render ('ShopMyShopBundle: Main: register.html.twig', array ('form' => $ form-> createView(), 'user' => $ user)); и в шаблоне я могу использовать, например, {{user.login}}; – user1052836

Смежные вопросы