Cette méthode peut-elle redirectToRoute() ont des arguments comme render()?
J'ai besoin d'accéder à une entité dans twig de symfony2.
À l'intérieur de la controler, je peux faire quelque chose comme:
return $this->render('frontendBundle::carrodecompras.html.twig', array(
'entity' => $entity
));
Puis dans twig je peux accéder aux propriétés d'entité avec entity.name
et.
J'ai besoin pour accomplir la même chose mais avec la fonction redirectToRoute()
return $this->redirectToRoute('frontend_carrodecompras', array(
'entity' => $entity,
));
Mais il ne semble pas fonctionner.
J'obtiens l'erreur suivante:
Variable "entité" n'existe pas dans frontendBundle::carrodecompras.html.brindille à la ligne 32
EDIT: je suis en utilisant Symfony 2.7
La variable $entité existe (il est en fait appelé $cortina dans l'application j'ai été en utilisant $entité de simplification), juste avant la redirectToRoute fonction je l'ai fait pour tester
echo "<pre>";
var_dump($cortina);
echo "</pre>";
return $this->redirectToRoute('frontend_carrodecompras', array(
'cortina' => $cortina,
));
Et le résultat est le suivant:
object(dexter\backendBundle\Entity\cortina)#373 (16) {
["id":"dexter\backendBundle\Entity\cortina":private]=>
int(3)
...
C'est le Rameau code:
<tr>
{% set imagentela = "img/telas/" ~ cortina.codInterno ~ ".jpg" %}
<td><img src="{{ asset(imagentela | lower ) }}" alt="" width="25" height="25">
</td>
<td>{{ cortina.nombre }}</td>
<td>{{ "$" ~ cortina.precio|number_format('0',',','.') }}</td>
</tr>
$entity
existe vraiment.l'entité est conservée dans la base de données avant la redirectToRoute méthode est appelée, de sorte que le $entité existe!
Je doute que
$entity
existe réellement où vous appelez redirectToRoute
. Pouvez-vous fournir plus de contexte? Peut-être la fonction qui appelle redirectToRoute si ce n'est pas trop grand? Ou au moins montrer le chemin de code à partir d'où $entity
est défini à l'endroit où il est utilisé?J'ai édité la question pour afficher la variable existe. Le problème est que la fonction redirectToRoute n'est pas de passer la variable de twig.
Comment vous voulez l'objet envoyé via l'url? Sérialiser en premier. Pourquoi tout simplement pas passer l'id de l'entité à la route et aller le chercher dans un autre contrôleur?
OriginalL'auteur enlego | 2016-01-13
Vous devez vous connecter pour publier un commentaire.
Lorsque vous appelez
redirectToRoute($route, array $parameters)
à partir d'un contrôleur,$parameters
est utilisé pour générer l'url de jetons, pas de variables à afficher dans la vue, ce qui est fait par le contrôleur assigné à l'itinéraire vous rediriger.exemple :
OriginalL'auteur Heah
$this->redirectToRoute('something', array('id' => 1)
est une commodité wrapper pour$this->redirect($this->generateUrl('something', array('id' => 1)))
. Il crée une URL avec votre params et s'attend à ce que la valeur de la params être une chaîne ou un nombre.http://symfony.com/blog/new-in-symfony-2-6-new-shortcut-methods-for-controllers
Vous avez besoin de transmettre l'id de l'entité afin de récupérer les données dans la nouvelle action ou de le décomposer en morceaux individuels de données avant qu'il ne touche le redirectToRoute ().
OriginalL'auteur SacWebDeveloper