Afficher les drapeaux des langues disponibles (traduction) dans une liste de l'admin
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
Code:
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 |
Fichier _drapeaux.php
Code:
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 }; ?> |
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.
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.
Code:
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;
} |
Encore une fois je pense qu'on en revient ici :
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