Comment passer un tableau à partir de Symfony 2 contrôleur à un template TWIG ?
Je ne peux pas passer un tableau à partir d'une symfony 2 contrôleur à un template TWIG. J'ai utiliser ce code dans le contrôleur:
$searchTerms['color'] = "Red";
return $this->render('TestBundle::search.html.twig',
array(
"searchTerms" => $searchTerms));
Dans le template twig, je suis en train d'essayer d'accéder à la variable comme ceci:
- {{ searchTerms['couleur'] }}
- {{ searchTerms.couleur }}
Fois sortie de rien, chaîne vide, donc il semble que la matrice de vient de modèle, mais ses éléments sont vides.
Quel est le problème?
Les deux syntaxes de travail pour moi (j'ai juste copié et collé votre code dans un projet de mine). Vous pouvez poster tout le code de votre contrôleur et le modèle?
OriginalL'auteur sphinks | 2012-09-10
Vous devez vous connecter pour publier un commentaire.
Oui, ce code fonctionne. La première chose à vérifier est que votre code twig est à la bonne page (
TestBundle::search.html.twig
). Cela peut paraître idiot, mais ça arrive parfois...Si c'est tout bon, je suggère que vous essayez de déboguer à l'intérieur de votre modèle. De débogage est la chose la plus importante. Vous aurez toujours ce genre de problème lors de la programmation, surtout lorsque vous essayez quelque chose de nouveau. Le mieux vous êtes au débogage du code, le mieux vous êtes en tant que programmeur, car il n'y a aucun moyen que vous pouvez obtenir tout droit la première fois.
Alors, comment pouvez-vous corriger?
De débogage dans votre template twig, vous pouvez utiliser le debug extension twig. Pour activer l'option de débogage, vous aurez à faire un rapide changement dans votre fichier de configuration. Vous pouvez aussi lire ce fil si votre perdu.
Vous pouvez déboguer n'importe quelle variable à l'intérieur de votre modèle comme celui-ci:
De cette façon, vous pouvez facilement le débogage de votre variable et test quel est ton problème:
Si vous souhaitez déboguer les choses rapidement, je vous recommande fortement d'utiliser le LadyBugBundle. C'est un outil génial qui vous permettra de faire quelque chose comme ça:
Dans votre contrôleur:
Dans votre template TWIG:
Pas si différent d'un classique
var_dump
option, mais si vous avez depuis longtemps des tableaux ou des objets,ladybug
va vous impressionner. Plus important encore, dans un contrôleur, vous aurez souvent la nécessité de stopper le code à un certain point afin d'éviter que la page se charge après votre debug déclaration, c'est assez facile avec de la coccinelle:Vous pouvez même demander à coccinelle pour charger le "débogage" variable dans Symfony profiler avec cette simple déclaration.
Vous avez maintenant un accès direct de la variable à partir d'un onglet de le profiler de Symfony2.
Coccinelle peut faire beaucoup plus, mais pour cela, le doc est vraiment bonne.
OriginalL'auteur Mick
Je pense que vous devez changer de modèle comme ceci:
Voir la documentation officielle: La création et l'utilisation des Modèles->l'intégration de contrôleurs
OriginalL'auteur user79382