Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
tout d'abords, je voulais vous souhaiter une bonne année et plein de réussite dans vos projets !
Je rencontre un petit problème avec Doctrine et n'ayant pas trouvé de solution sur internet, je me tourne donc vers vous...
Au niveau de certaines de mes vues, j'ai un bouton qui permet l'export de certaines données présente dans cette vue.
Le problème se situe au niveau des alias de champs que je souhaite traduire (application multilangue).
Pour certains alias, j'ai par exemple des mots contenant des caractères spéciaux (exemple : N°), des suites de mots (exemple : code postal) ou des mots avec des accents.
J'ai essayé de passer les mots à traduire avec la classe Expr en literal mais j'ai ce type d'erreur :
[lang=php] Error: Expected Doctrine\ORM\Query\Lexer::T_FROM, got 'N°'
Voici la requête :
[lang=php] $qb = $this->_getEm()->createQueryBuilder(); $qb->select([ 'p.idprovider AS ' . $translator->translate('idprovider'), 'p.name AS ' . $translator->translate('name'), 'tl.text AS ' . $translator->translate('category'), 'a.address AS ' . $translator->translate('address'), 'a.postalcode AS ' . $translator->translate('postalcode'), 'a.city AS ' . $translator->translate('city'), 'a.telephone AS ' . $translator->translate('telephone'), 'a.email AS ' . $translator->translate('email'), 'p.website AS ' . $translator->translate('website') ]) ->from('Provider\Entity\Provider', 'p') ->leftJoin('Application\Entity\Address', 'a', 'WITH', 'a.idaddress = p.address_id') ->leftJoin('Provider\Entity\ProviderProviderCategory', 'ppc', 'WITH', 'ppc.provider_id = p.idprovider') ->leftJoin('Provider\Entity\ProviderCategory', 'pc', 'WITH', 'pc.idprovider_category = ppc.provider_category_id') ->leftJoin('Application\Entity\Translation', 'tl', 'WITH', 'pc.name = tl.idtranslation AND tl.language_id = \''.$this->languageId.'\'') ->groupBy('p.idprovider');
Si je laisse cette requête comme ci-dessus, j'ai également une erreur du même type
Une idée ?
Merci d'avance,
Romain
Dernière modification par RomainG (20-01-2016 09:26:23)
Hors ligne
Bonjour a tu reglé ton problème ?
Hors ligne
Hello,
quand tu dit que tu a par exemple :
'code postal', on est d'accord qu'il s'agit de: $translator->translate('postalcode')?
Auquel cas je peu comprendre que tu ai besoin de traduire tes noms de champs mais je ne pense pas que l'endroit décrit ici soit le plus adapté:
Ta requête devrait toujours te renvoyer le même résultat, par contre à l'affichage (un display ou un export, peu importe) tu peu a ce moment-ci afficher la traduction de ton alias.
Et ça te permettrais d'éviter de te torturer avec une traduction doctrine ^_^
Dernière modification par flobrflo (15-01-2016 09:14:47)
Hors ligne
Je suis d'accord avec flobrflo, il y a d'autre solution que de mettre les traduction DANS la requête. Les mettre plus tard, si tu prend l'exemple du module ZfcDatagrid, lors de ton export, la colonne possède une propriété accédant au Translator qui te traduirai le nom de la colonne et les valeur du champs... le principe est le même, tu récupère tes donnés avec une requête tout ce qui as de plus normal, et ensuite tu t'emploi dans ta classe d'export a traduire les champ et les valeurs, si jamais.
Hors ligne
Bonjour,
désolé pour la réponse tardive... Alors j'ai suivi votre conseil et j'ai placé la fonction de traduction au niveau de ma classe qui gère l'export en csv. C'était tout bête mais je n'y avais pas pensé...
Merci à vous deux
Hors ligne