Je suis nouveau dans symfo mais j'ai besoin de traduire le contenu de mon site. J'utilise a2lix (dernière version) et les comportements de doctrine KNP (Translatable).Comment récupérer la traduction d'une "sous-entité" en utilisant Symfony a2lix knp doctrine comportements traduisibles
Disons que j'ai 2 entités (par exemple Articles et Catégories).
Comme dans le doc (https://github.com/KnpLabs/DoctrineBehaviors) pour les traductions, j'utilise 2 classes pour les catégories (Category et CategoryTranslation). Pour récupérer les traductions de ma catégorie, j'utilise une requête avec les paramètres régionaux. J'obtiens l'environnement local avec Request $ request ($ locale = $ request-> getLocale();). Voici un exemple de mon contrôleur et de la requête dans mon référentiel.
Contrôleur
public function indexAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
$locale = $request->getLocale();
$entities = $em->getRepository('AcmeBundle:Category')->findAllByLocale($locale);
return $this->render('CTCArtworkBundle:Backend/Artwork:index.html.twig', array(
'entities' => $entities,
));
}
dépôt Je suis en train de récupérer des informations pour les paramètres régionaux.
public function findAllByLocale($locale){
return $this->createQueryBuilder('a')
->join('a.translations', 'aTrans')
->where('aTrans.locale = :locale')
->setParameter("locale", $locale)
->addSelect('aTrans')
->getQuery()
->getResult()
;
}
Je ne sais pas si c'est une bonne pratique mais ça marche pour moi. Je récupère fr/en catégories dans mon modèle de Twig comme quand je change l'url:
<tr>
<th>Category</th>
<td>{{ category.translations|First.name }}</td>
</tr>
Mon problème
Pour la traduction de mon article, je fais la même chose. J'ai 3 propriétés - titre - Description - catégorie (J'utilise a2lix_translatedEntity (http://a2lix.fr/bundles/translation-form/#bundle-additional))
Lorsque je tente de rendre un dossier de l'article, je ne récupérerez pas la traduction de ma catégorie Nom, mais bien pour le titre et description.
J'ai aussi lu cela (https://github.com/KnpLabs/DoctrineBehaviors#guess-the-current-locale) mais je ne comprends pas vraiment. Est-ce un moyen de toujours passer les paramètres régionaux?
Qu'est-ce que je fais mal?
Je suis bloqué et ne trouve aucune documentation pour résoudre mon problème. Désolé pour mon anglais ;-)
Toute aide serait très appréciable. Merci
regard sur [cette réponse] (http://stackoverflow.com/questions/29232860/how-to-access-translated-property-using-knp-labs -translatable-doctrine-behaviors/29233740 # 29233740) il pourrait être utile pour vous. –
@gp_sflover, merci beaucoup, vous me sauvez aussi la vie. –