Bonjour à tous,
Je suis passé tout récemment à Symfony pour découvrir l'univers que propose ce framework de développement. Après avoir suivi quelques tutoriels plutôt basiques (blog, ...) je me suis décidé de coder mon propre forum, pour voir si j'ai bien compris le concept.
Or, j'ai une chose que je souhaiterai faire contre laquelle je butte depuis deux jours maintenant. Je me tourne vers vous dans l'espoir que vous puissiez me conseiller. Je m'explique.
Ci-après mon fichier schema.yml contenant les informations sur les 4 tables que je souhaite avoir pour mon forum:
- Forum qui contient les différents forums,
- Topic qui fait partie d'un forum et qui est un sujet de discussion,
- Post qui fait partie d'un topic et qui est une réponse à un sujet,
- User qui fait référence aux auteurs de sujets et de réponses.
Après avoir créé le fichier de schéma, comme dans le tutoriel officiel, j'ai créé les propel, généré le CRUD et me voilà parti pour la modification des templates pour ordonner le forum selon mes envies.
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
30
31 propel: forum_forum: _attributes: { phpName: Forum } id: name: varchar(255) description: longvarchar type: integer created_at: forum_topic: _attributes: { phpName: Topic } id: forum_id: user_id: title: varchar(255) body: longvarchar created_at: forum_post: _attributes: { phpName: Post } id: topic_id: user_id: title: varchar(255) body: longvarchar created_at: forum_user: _attributes: { phpName: User } id: name: varchar(255) email: varchar(255) password: varchar(255) created_at:
J'ai pu faire pas mal de choses jusque là, mais actuellement je travaille sur la vue "forum/show" où est listé un des forums sélectionné par l'utilisateur et où sont affichés les différents sujets (Topic) qu'il contient.
Pour récupérer les sujets qu'il contient, je suis allé modifier les actions de mon module "forum" et ai modifié la fonction executeShow() de la façon suivante :
Ceci me permet d'afficher les sujets (avec ses différentes informations que l'on peut voir dans le schema.yml : title, body, user_id, created_at).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public function executeShow() { $this->forum = ForumPeer::retrieveByPk($this->getRequestParameter('id')); $this->forward404Unless($this->forum); $c = new Criteria(); $c->add(TopicPeer::FORUM_ID, $this->getRequestParameter('id')); $c->addAscendingOrderByColumn(TopicPeer::CREATED_AT); $this->topics = TopicPeer::doSelect($c); }
Dans le template showSuccess.php je récupère et affiche les informations de la façon suivante:
Dela sorte je réussis bien à afficher les informations sur le sujet, mais pas moyen d'aller au delà et de trouver une manière de récupérer les informations complètes sur l'auteur au travers de son user_id. Pour le moment ce n'est que l'identifiant qui s'affiche et non le pseudonyme de l'utilisateur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <?php foreach ($topics as $topic): ?> <tr> <td align='left'><?php echo link_to($topic->getTitle(), 'topic/show?id='.$topic->getId()) ?></td> <td align='center'></td> <td align='right'><?php echo $topic->getUserId() ?></td> <td align='right'><?php echo $topic->getCreatedAt() ?></td> </tr> <?php endforeach; ?>
Avez vous une astuce, une solution à me proposer pour aboutir à mes fins ?
Merci par avance à vous !
Pierre P.
Partager