Symfony2 - Twig rendre contrôleur et le retour de la matrice de réponse

Note: Ce que je fais ici est intégrez des contrôleurs <--- voir ce lien pour une semblable (officiel) exemple.

Je veux appeler un contrôleur à partir d'un template twig, et le contrôleur de retourner un tableau que je peux utiliser dans le reste de mon modèle.

Je peux le faire avec les variables individuelles:

Twig

{% set testVar = render(controller('AppBundle:Test:index')) %}

Contrôleur

class TestController extends Controller
{
    public function testAction()
    {
        return new Response('OH HAI');
    }
}

Toutefois, déclenche une exception: ("The Response content must be a string or object implementing __toString(), "array" given.") avec le même fichier twig.

public function testAction()
{
    return new Response(array('test' => 1, 'foo' => 'bar'));
}

Cela lève l'exception ci-dessus. Comment puis-je accomplir ce que je cherche sans la création d'un mannequin, supplémentaire inutile de modèle pour le contrôleur de rendre?

Ce que vous essayez de faire est de briser modèle MVP (que vous essayez de mettre de la logique dans l'affichage de la couche). Mon conseil est de repenser votre solution. Peut-être que si vous nous en dire plus à ce que vous voulez atteindre, je peux dire de plus. Cheers!
Merci pour la réponse @Cyprien, je me sentais mal à faire cela, alors peut-être il ya une autre façon. De mon point de vue est divisé en 3 templates twig qui s'étendent d'un modèle de mise en page: header, barre latérale et contenu. Le barre latérale exigera de données dynamique sur chaque chargement de la page (certaines statistiques en direct, par exemple). J'ai besoin d'avoir la barre latérale contiennent ces données peu importe ce qui est dans le contenu modèle.
Mon but était de code de la barre latérale, de la récupérer des données à partir d'un contrôleur séparé, et puis tout ce que j'ai dans le futur est juste le contenu des pages et je n'ai pas besoin de dupliquer le code pour récupérer les statistiques de la barre de menu.
Je json_encode() du tableau de la réponse et de l'utilisation d'une extension twig pour le décoder dans la vue: stackoverflow.com/questions/14500698/decoding-json-in-twig
Ok, je comprends - et c'est ok. Vous devez créer propre contrôleur d'action pour la barre latérale et de l'inclure dans votre template de base comme vous l'avez fait. Mais au lieu de la barre latérale de l'action de retourner quoi que ce soit - elle devrait rendre toute la sidebar point de vue dans son propre modèle. Donc, l'appel: {% render(controller('AppBundle:Test:index')) %} produira toute la sidebar htmlcode. Suis-je bon de penser ce que vous voulez? Si oui, je vais élargir exemple dans une réponse.

OriginalL'auteur Jimbo | 2013-06-04