2017-08-22 2 views
0

Dans mon contrôleur Symfony je veux rendre un modèle PHP Mustache, avec une entité Doctrine:rendu Mustache modèle PHP avec le modèle d'entité Doctrine

// The Doctrine entity, a dump($user) shows the correct entity 
$user = $this->get('x_service')->getUserById($id); 

$templateFile = file_get_contents('.../path/to/file'); // tested, it works 
$mustache = new \Mustache_Engine(); 
$renderedTemplate = $mustache->render($templateFile, array('user' => $user)); 

Le fichier modèle ressemble à ceci:

<p> 
    User name: {{ user.name }} 
</p> 

Mais la variable n'est pas mise dans le modèle. Il affiche seulement la chaîne "User name:". J'ai également essayé sans le tableau associatif:

$renderedTemplate = $mustache->render($templateFile, $user); 

// the template file: 

<p> 
    User name: {{ name }} 
</p> 

Cela n'a pas fonctionné non plus.

Cependant, quand je mets une autre variable avec le tableau associatif, qui fait montre:

$renderedTemplate = $mustache->render($templateFile, array('user' => $user, 'meh' => 'hem')); 

// the template file: 

<p> 
    User name: {{ name }} <- still no output 
    Meh: {{ meh }} <- this does give output 
</p> 

Quelques informations supplémentaires: Je veux juste rendre ce petit modèle de moustache dans mon contrôleur. Pour la réponse du contrôleur, j'utilise Twig. C'est parce que je ne fais que réutiliser un modèle Moustache.js frontal.

Modifier

Comme je l'ai lu the manual, il devrait fonctionner de donner un objet dans le modèle:

enter image description here

+0

Mustache veut un tableau, est donné un 'Entity'. Suggérer d'hydrater à un tableau, par: http://doctrine-orm.readthedocs.io/en/latest/reference/dql-doctrine-query-language.html#array-hydration – bishop

+0

Pour votre édition: cela ne fonctionnera pas si vos propriétés utilisateur ne sont pas 'public'. TWIG appelle le getter, je ne sais pas si la moustache le fait aussi. essayez '{{user.getName}}' – LP154

+0

@ LP154 Cela a fait l'affaire. Je suis tellement habitué aux variables de classe privée que je n'ai pas remarqué. Pouvez-vous poster ceci comme réponse? – BigJ

Répondre

1

Il ne fonctionnera pas si vos propriétés de l'utilisateur ne sont pas publiques.

Essayez {{ user.getName }}