Partage
  • Partager sur Facebook
  • Partager sur Twitter

Symfony / Condition sur variable dans twig

5 avril 2020 à 20:40:22

Bonjour à tous,

Je vous explique ma nouvelle difficulté

Côté base de données :

Je dispose d'une table user qui contient :

  • id
  • email (qui est l'identifiant de connexion)
  • password (qui est le mot de passe)

Je dispose d'une table Doctors, qui contient :

  • id
  • firstname
  • lastname
  • init
  • user_id

Côté vues :

Je dispose d'un controller qui retourne une vue qui liste les utilisateurs (provenant de la table user)

    /**
    * @Route("/utilisateurs", name="userslist")
    */
    public function usersList(UserRepository $users, DoctorsRepository $avocat) {
    return $this->render('admin/userslist.html.twig', [
        'users' => $users->findAll()
    ]);

Juste là pas de soucis, ma page affiche bien la liste des utilisateurs de mon site.

Ce que je souhaite faire :

Au sein de la vue, afficher un bouton uniquement pour les utilisateurs qui disposeraient de l'enregistrement "Y" du champ "init" de la table "doctors"

Mon problème :

Je ne vois pas comment faire cette relation.

Pourriez-vous m'aider ?

Grand merci par avance :)

  • Partager sur Facebook
  • Partager sur Twitter
6 avril 2020 à 6:57:16

Bonjour,

Alors déjà tu es resté sur le modèle base de données et avec Symfony on ne parle plus de tables, de colonnes, d'index, etc mais d'entité, propriétés, méthodes, relations ... et la base de données tu laisses l'ORM s'en occuper si tu es avec une base type mysql ou l'ODM sit u es avec une base type mongoDB.

Ce n'est pas qu'une question de langage, c'est un paradigme différent et si tu continues à penser base de données, tu ne te sers pas de Symfony.

Ce que tu demandes est simple si j'ai bien compris.

- la solution la plus simple tu utilises la méthode findBy qui permet de filtrer sur une propriété d'une entité (et non sur une colonne d'une table).

- sinon tu fais une méthode qui dans un repository avec le query builder. C'est un peu plus complexe mais c'est une solution que tu devras utiliser dans un projet plus complexe.

Je t'invite à lire le cours sur ce site. Même si ancien cette partie est toujours valable.

https://openclassrooms.com/fr/courses/2078536-developpez-votre-site-web-avec-le-framework-symfony2-ancienne-version/2081287-recuperer-ses-entites-avec-doctrine2

A+

  • Partager sur Facebook
  • Partager sur Twitter
6 avril 2020 à 20:09:19

Bonsoir,

Tu peux aussi créer une requête dans le repository :

https://symfony.com/doc/3.3/doctrine/repository.html

Un exemple por trouver des utilisateurs musiciens :

    public function findMusicien() {
        return $this->createQueryBuilder('m')
            ->andWhere('m.member_statut = :statut')
            ->setParameter('statut', 'Musicien')
            ->getQuery()
            ->getResult();
    }



-
Edité par Natoub 6 avril 2020 à 20:10:58

  • Partager sur Facebook
  • Partager sur Twitter