Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problèmes avis user dashboard users courants

    29 avril 2024 à 23:58:19

    J'ai un énorme souci sur lequel je suis bloqué depuis quelques temps...

    Je crée un site web pour que les agences immobilières puissent noter les locataires.

    Je souhaite faire un dashboard pour les agences immo qui ont noté les locataires avec un historique des notes ;

    Hors, je n'arrive pas à les afficher et à les récupérer...

    Voici mon contrôleur :

    <?php
    // src/Controller/AgencyDashboardController.php
    namespace App\Controller;
    
    use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
    use Symfony\Component\HttpFoundation\Response;
    use Symfony\Component\Routing\Annotation\Route;
    use Doctrine\ORM\EntityManagerInterface;
    use App\Entity\Review;
    use App\Entity\User;
    
    class AgencyDashboardController extends AbstractController
    {
        #[Route('/dashboardavis', name: 'user_dashboard')]
        public function userReviews(EntityManagerInterface $entityManager): Response
        {
            $user = $this->getUser(); 
            $reviews = $entityManager->getRepository(Review::class)->findBy(['user' => $user]);
    
            return $this->render('agency_dashboard/index.html.twig', [
                'user' => $user,
                'reviews' => $reviews,
            ]);
        }
    }
    

    Voici ma vue :

    {# templates/agency_dashboard/index.html.twig #}
    
    {% extends 'base.html.twig' %}
    
    {% block title %}Tableau de bord{% endblock %}
    
    {% block body %}
        <h1>Les avis que vous avez poster </h1>
        <table>
            <thead>
                <tr>
                    <th>Titre</th>
                    <th>Contenu</th>
                    <th>Date</th>
                </tr>
            </thead>
            <tbody>
                {% for review in reviews %}
                    <tr>
                        <td>{{ review.nomAgence }}</td> 
                        <td>{{ review.comment }}</td>
                        <td>{{ review.startDate|date('Y-m-d H:i:s') }}</td>
                    </tr>
                {% endfor %}
            </tbody>
        </table>
    {% endblock %}

    Mon entity review : https://github.com/xavgdt66/Projet_Loc/blob/main/src/Entity/Review.php

    Mon entity user : https://github.com/xavgdt66/Projet_Loc/blob/main/src/Entity/User.php

    Je vous mets les liens car mettre le code toutes mes entity serait trop long sur le topic je pense.



    • Partager sur Facebook
    • Partager sur Twitter
      30 avril 2024 à 9:33:55

      Salut

      Tu n'arrives pas à les afficher et les récupérer, pourrais-tu être plus précis ?

      • Partager sur Facebook
      • Partager sur Twitter
        30 avril 2024 à 13:24:58

        Désolé, mais ce n'est pas beaucoup plus clair à mon sens. Tu n'as aucun résultat, ou tu en as mais pas ceux que tu attends ?

        Je pencherais presque pour la première option, ce qui pourrait déclencher le second souci : vu qu'il n'y a rien à afficher, il y a un "problème" à l'affichage…

        Auquel cas, est-ce que tu arrives à voir quelle est la requête qui est exécutée pour la tentative de récupération ?

        Aussi, es-tu sûr de regarder la bonne "page", de déclencher la bonne action de contrôleur ?

        -
        Edité par Ymox 30 avril 2024 à 13:36:51

        • Partager sur Facebook
        • Partager sur Twitter
          30 avril 2024 à 16:56:53

          D'accord je vais mieux explique et bien plsu detailler. 

          Mon but est d'avoir sur ma vue les avis que que l'users courant a poster. 

          Par exemple : 

          - " Agence Immo la foret " a poster une avis sur le profil du locataire  " jean dupont " 

          - Quand " Agence Immo la foret " va sur la route  /dashboardavis il doit y avoir ecrit " Vous avez ecris un avis à  " jean dupont "  + afficher l'avis(Comemnt + date) 

          Tu as compris ? 

          Voila function ou je suis censer recuper les avis que l'user courant a poster :

            #[Route('/dashboardavis', name: 'user_dashboard')]
              public function userReviews(EntityManagerInterface $entityManager): Response
              {
                  $user = $this->getUser(); 
                  $reviews = $entityManager->getRepository(Review::class)->findBy(['user' => $user]);
          
                  return $this->render('agency_dashboard/index.html.twig', [
                      'user' => $user,
                      'reviews' => $reviews,
                  ]);
              }
          }

          et suite ma vue : 

          {# templates/agency_dashboard/index.html.twig #}
          
          {% extends 'base.html.twig' %}
          
          {% block title %}Tableau de bord{% endblock %}
          
          {% block body %}
              <h1>Les avis que vous avez poster </h1>
              <table>
                  <thead>
                      <tr>
                          <th>Titre</th>
                          <th>Contenu</th>
                          <th>Date</th>
                      </tr>
                  </thead>
                  <tbody> 
                      {% for review in reviews %}
                          <tr>
                              <td>{{ review.comment }}</td>
                              <td>{{ review.startDate|date('Y-m-d H:i:s') }}</td>
                          </tr>
                      {% endfor %}
                  </tbody>
              </table>
          {% endblock %}
          




          • Partager sur Facebook
          • Partager sur Twitter
            30 avril 2024 à 20:24:47

            J'ai compris ce que tu souhaites faire, mais j'aimerais que tu m'expliques ce que tu constates avec ce que tu nous montres. Le problème n'est pas ce que tu veux réaliser, mais ce que fait ce que tu as réalisé, je me trompe ?

            Je repose donc la question :

            Tu n'as aucun résultat, ou tu en as mais pas ceux que tu attends ?

            Dit autrement : qu'est-ce que tu as comme résultats pour le moment, et parmi ceux-ci, y en a-t'il par exemple que tu voudrais avoir et que tu n'as pas, d'autres qui au contraire ne devraient pas s'y trouver ?

            Du peu que je me souviens d'un précédent sujet : est-ce que l'utilisateur que tu lies au commentaire est celui qui a rédigé (rédacteur) ou celui sur qui cela a été rédigé (sujet) ?

            -
            Edité par Ymox 30 avril 2024 à 20:29:17

            • Partager sur Facebook
            • Partager sur Twitter
              30 avril 2024 à 21:29:06

              D'accord désolé d'avoir mal compris 

              Alors rien les avis ne s'affiche même pas pour celui qui a poster(Le compte agence)

              Par contre quand je suis avec un compte locataire(Celui qui reçois les avis) il y ces avis qui lui sont attribuée (Que l'agence lui à donner).

              Voici ma table: user-id est le compte qui reçois l'avis(Le locataire) et nom_agence(L'agence immo).Les deux sont liée normalement à moins que j'ai fait une erreur mais je ne voie pas ....

              CREATE TABLE `review` (
                `id` varchar(255) NOT NULL,
                `user_id` int(11) DEFAULT NULL,
                `start_date` datetime NOT NULL,
                `end_date` datetime NOT NULL,
                `nom_agence` varchar(255) DEFAULT NULL,
                `comment` longtext DEFAULT NULL
              ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;



              -
              Edité par Spawnkiller66 30 avril 2024 à 21:34:26

              • Partager sur Facebook
              • Partager sur Twitter
                30 avril 2024 à 22:36:16

                Avec le code que tu montres, je dirais que tu cherches les avis sur un locataire, locataire qui est l'utilisateur alors authentifié. Donc le locataire peut voir les avis écrits sur lui…

                Il semble qu'il faille plutôt rechercher les avis rédigés par l'agence de l'utilisateur courant.

                Et je dirais que non, il n'y a pas de relation (au sens Doctrine) entre une agence et un avis — à moins que le nom ne serve de clé primaire pour l'entité représentant une agence, et que son nom n'ait pas été modifié pour la clé étrangère ?

                -
                Edité par Ymox 30 avril 2024 à 22:42:02

                • Partager sur Facebook
                • Partager sur Twitter
                  1 mai 2024 à 15:09:51

                  D'accord maintenant que tu me el dit  , oui j'ai fait cette erreur de récup les avis écrit par l'user courant.. 

                  Dans ma table review j'ai cela 'nom_agence' cela recup le nom de l'agence qui submit l'avis. 

                  Dans mon entity user j'ai cela : 

                      #[ORM\OneToMany(mappedBy: 'user', targetEntity: "Review")]
                      private  $reviews;

                  Est dans mon entity reviews j'ai cela :

                  #[ORM\ManyToOne(targetEntity: "App\Entity\User", inversedBy: "reviews")]
                      #[ORM\JoinColumn(name: "user_id", referencedColumnName: "id")]
                      private $user;



                  • Partager sur Facebook
                  • Partager sur Twitter
                    3 mai 2024 à 10:43:11

                    Est-ce que tu t'en es sorti ? Si non, où bloques-tu ?

                    • Partager sur Facebook
                    • Partager sur Twitter
                      5 mai 2024 à 18:12:28

                      Ymox a écrit:

                      Est-ce que tu t'en es sorti ? Si non, où bloques-tu ?


                      Salut c'est bon je viens à peine mtn de réussir. 

                      Alors c'était juste ma requête qui n'était pas bonne , mtn je récup de l'entity reviews et non e l'entity user .... 

                      class AgencyDashboardController extends AbstractController
                      {
                          #[Route('/dashboardavis', name: 'dashboard_avis')]
                          public function userReviews(EntityManagerInterface $entityManager): Response
                          {
                              $currentUser = $this->getUser(); // Recup users courant 
                      
                               
                              $userReviews = $entityManager->getRepository(Review::class)->findBy(['nomAgence' => $currentUser->getNomAgence()]);
                      
                              return $this->render('agency_dashboard/index.html.twig', [
                                  'user' => $currentUser,
                                  'reviews' => $userReviews,
                              ]);
                          }
                      }
                      

                      Merci à toi tu est vraiment génial et tu apporte bcp à la commu de Openclassroom ! 

                      • Partager sur Facebook
                      • Partager sur Twitter
                        6 mai 2024 à 8:53:35

                        Je me permets de relever ce que j'avais déjà notifié dans un précédent sujet : utiliser getUser() induit parfois des surprises, je recommande vivement d'utiliser à la place un paramètre typé \Symfony\Component\Security\Core\Authentication\User\UserInterface là où c'est possible, ce qui est le cas ici.

                        N'oublie pas de signaler tes sujets comme étant résolus en utilisant le bouton adéquat.

                        • Partager sur Facebook
                        • Partager sur Twitter

                        Problèmes avis user dashboard users courants

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        • Editeur
                        • Markdown