Bonjour à tous,
Je découvre le développement avec Symfony et après quelques jours d'utilisations, je rencontre un problème pour internationaliser mes tables Doctrine.
Tout d'abord, je vais vous exposer la situation:
Mon site a pour but d'afficher des voyages.
Chaque voyages est associé à une liste de pays (par une table de liaison)
Voici la structure de mes tables:
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 Continent: tableName: Continent actAs: I18n: fields: [nom] columns: id: { type: integer(3), unsigned: true, primary: true, autoincrement: true } nom: { type: string(15), notnull: true } Pays: tableName: Pays columns: id: { type: integer(4), unsigned: true, primary: true, autoincrement: true } continent_id: { type: integer(3), unsigned: true, notnull: true } sous_continent_id: { type: integer(4), unsigned: true } iso: { type: string(2) } nom: { type: string(100), notnull: true } relations: Continent: { onDelete: CASCADE, local: continent_id, foreign: id }
Dans la classe Voyage, je récupère la liste des pays puis pour chaque pays je récupère le continent. Pour cela j'ai créé une méthode dans la classe ContinentTable (est-ce correct ou y a-t-il plus simple?):
Et voici ma méthode:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 foreach($paysList->execute() as $pays) { $continents[] = Doctrine_Core::getTable('Continent')->getContinentByIdAndCulture($result->pays_id, 'fr'); }
Dans cette méthode si je ne spécifie pas d'alias au champ nom, je n'arrive pas à le récupérer. Est-ce normal??
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 public function getContinentByIdAndCulture($id, $culture = 'es') { $q = $this->createQuery('c') ->select('c.id, t.nom as nom') ->leftJoin('c.Translation t') ->andWhere('t.id = ?', $id) ->andWhere('t.lang = ?', $culture); foreach($q->execute() as $c) { $continent = $c->nom; } return $continent; }
Cela fonctionne plus ou moins, mais je voudrai vraiment adopter les bonnes méthodes de travail liées à ce Framework.
Mon autre problème est lié à la culture. Je n'arrive pas à récupérer la culture automatiquement? Dois-je la définir dans chaque contrôleur?
Davance, merci à tous pour vos remarques et conseils.
Hervé
Partager