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:
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
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
@ 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