2015-11-14 1 views
1

je veux définir une variable à brindille quand lien de redirection comme lorsque l'on utilise le rendu des méthodes:définir les variables à brancher lorsque le lien de redirection?

return $this->render('socialBundle::index.html.twig',array(
        'id' => $id 
       )); 

il la variable Id à brindille: {{id}}

return $this->redirect($this->generateUrl("tuto_animaux_voir", array(
        'id' => $id 
       ))); 

il sera définir la variable Id pour le lien: xxxxx.com/Id, je veux qu'il rende cette variable à twig lorsque rediriger ...

désolé pour ce mauvais concept et la langue parce que je ne suis pas l'Angleterre, et c'est mon première question dans stackoverflow,

attendre une réponse, merci

+2

Vous ne pouvez pas envoyer de données sur la redirection. Vous pouvez créer une autre action qui prend votre paramètre 'id' et récupère' object' de la base de données. –

+0

alors que puis-je faire ?? – hz4web

+0

Quelle variable voulez-vous transmettre? –

Répondre

1

Je ne comprends pas très bien ce que vous voulez faire, si vous voulez mettre un lien dans un modèle de brindille ou juste rediriger d'un contrôleur selon une condition. Si vous pouvez donner plus de détails sur ce que vous voulez faire, je pense que je peux vous aider.

UPDATE (solution)

Vous pouvez utiliser « Transfert à un autre contrôleur » au lieu d'utiliser « redirect » et à partir de là pour envoyer les variables au modèle de brindille

+0

je veux juste passer une variable à twig en utilisant la redirection? – hz4web

+0

Vous pouvez utiliser ["Transfert vers un autre contrôleur"] (http://symfony.com/doc/current/book/controller.html#forwarding-to-another-controller) au lieu d'utiliser "Redirect" et de là pour envoyer les variables du modèle de brindille. – rck6982

+0

c'est vraiment ce dont j'ai besoin, merci .... – hz4web

0

Dans votre cas 'tuto_animaux_voir' est une route associée à l'action du contrôleur. id donnée sera disponible en tant que paramètre d'action, de sorte que vous pouvez passer comme ceci:

public function fooAction($id) 
{ 
    return $this->render(
     'socialBundle::foo.html.twig', 
     ['id' => $id] 
    ) 
} 

Vous pouvez également récupérer les données de base de données et de les transmettre à la vue.

Si ce n'est pas ce que vous voulez obtenir, dites-nous pourquoi vous voulez utiliser la redirection, et ce que ces deux actions devraient faire.

Edit: Si je comprends bien votre commentaire correctement, vous voulez mettre en œuvre des messages flash, qui sont already available in symfony.

L'exemple dans docs est simple et explicite.

+0

merci, mais il ne redirige pas le lien ....? – hz4web

0

En fonction de votre dernier commentaire, Je suis arrivé à la conclusion suivante.

Supposons que vous avez une action d'index, avec l'itinéraire tuto_animaux_voir. Et route a un paramètre id. Il faut id comme paramètre et récupère l'alerte de la base de données (nous avons des alertes sur la base de données). Nous avons également l'entité Alert avec les champs id (par défaut), title.

...

public function indexAction($id){ 
    $alert = $this->getDoctrine()->getEntityManager("AppBundle:Alert")->find($id); 

    return $this->render("AppBundle:Post:index.html.twig", array(
    'alert' => $alert 
)); 
} 

Dans votre modèle index.html.twig vous pouvez afficher votre alerte.

... 
{{ alert.title }} 
... 

Si vous souhaitez rediriger vers l'action d'index dans la branche.

<a href="{{ path("tuto_animaux_voir", { 'id': alert_id })}}">Alert Title<a> 

Si vous souhaitez rendre cette action partielle.

{{ render(controller('AppBundle:Alert:index',{'id': alert_id})) }} 

Je pense que ma réponse serait utile pour vous.

+0

bien, mais cela ne redirigera pas la page, il va montrer l'ID dans le lien, ... je veux juste le passer sans le montrer .. – hz4web

+0

Okay. Le problème est que vous ne pouvez pas décrire complètement votre logique métier. –

+0

le comprenez-vous maintenant ?? – hz4web