Bonjour à tous,
J'ai une application de type vente privé. Le site est traduit en 2 langues Français et Anglais, jusqu'ici pas de souci.
Sur le frontend je n'affiche les produits que si le titre et la description sont disponible dans la langue d'affichage actuel du site, jusqu'ici pas de souci.
Dans le backend j'aimerais afficher dans la liste des articles des petits drapeaux pour que l'utilisateur sache si le titre et la description du produit sont traduit (non vide dans la langue).
Dans la liste de mes articles j'ai réussi a affiché mes drapeaux en créant le fichiers _drapeaux.php et en l’appelant depuis le fichier generator.yml du module
Fichier generator.yml
Fichier _drapeaux.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 generator: class: sfDoctrineGenerator param: model_class: Objet theme: admin non_verbose_templates: true with_show: false singular: ~ plural: ~ route_prefix: objet with_doctrine_route: true actions_base_class: sfActions config: actions: ~ fields: new_ObjetOption: { label: Nouvelle option } list: title: Liste des articles display: [=titre,_drapeaux, =valeur, _image] object_actions: _edit: ~ filter: display: [titre,valeur] form: ~ edit: title: Modification de l'article "%%titre%%" new: title: Création d'un article
L'affichage fonctionne mais si j'effectue une recherche via le filtre "titre" alors seul le drapeaux français s’affiche. Ce qui est normal puisque le backend n'est utilisé qu'en français et donc que la recherche se fait sur la langue fr si je change de langage dans le back alors c'est l'inverse recherche sur la traduction "EN" est affichage des drapeaux en anglais seulement. Quelqu'un aurait il une idée pour que les drapeaux s'affiche bien tout en utilisant le filtre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <?php if($objet->getTranslation()->fr->titre){?> <img src="/images/front/flag_fr.gif"/> <?php }; ?> <?php if($objet->getTranslation()->en->titre){?> <img src="/images/front/flag_en.gif"/> <?php }; ?>
En gros comment avoir accès aux différentes traductions de mon objet indépendamment de la langue de navigation actuelle ?
Autre problème lié :
Lorsque j'ajoute une nouvelle vente je voudrait qu'au moment de choisir l'article à mettre en vente dans le select du formulaire new ou edit je puisse savoir dans quel langue est traduit cet article en ajoutant à la suite du nom du produit les chaines : "FR" et/ou "EN".
Pour cela j'ai voulu utilisé la fonction toString (ci dessous) de mon article et là même problème seul FR s'affiche car je navigue dans l'admin en français inversement si je navigue sur l'admin en anglais.
Encore une fois je pense qu'on en revient ici :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 public function __toString() { $titre=$this->getTitre(); if(strlen($titre)>30){ //$this->getId().' - '. $titre=substr($this->getTitre(),0,30).'... - '.number_format($this->getValeur(),2,'.','').' - '; }else{ //$this->getId().' - '. $titre=$this->getTitre().' - '.number_format($this->getValeur(),2,'.','').' - '; } if($this->getTranslation()->fr->titre){ $titre.='FR '; }; if($this->getTranslation()->en->titre){ $titre.='EN'; }; return $titre; }
En gros comment avoir accès aux différentes traductions de mon objet indépendamment de la langue de navigation actuelle dans la fonction toString ?
Voila si quelqu'un a une idée je suis preneur car ce problème me trotte depuis un moment.
Merci d'avance Yoann
Partager