IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

[SF5] Faire un find mais afficher le slug dans la route


Sujet :

Symfony PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Novembre 2018
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Novembre 2018
    Messages : 58
    Points : 48
    Points
    48
    Par défaut [SF5] Faire un find mais afficher le slug dans la route
    Afin de mieux gérer ma route avec mes 2 paramètres, j'utilise le "ParamConverter" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    /**
         * @Route("/{slug}/article/{article_id}", name="app_article")
         * @ParamConverter("user", options={"mapping": {"slug": "slug"}})
         * @ParamConverter("article", options={"mapping": {"article_id" : "id"}})
         */
        public function index()
    Quand je me rend sur la route "/user3/article/5" tout fonctionne. Maintenant je veux être plus UX et j'aimerais avoir une route comme celle-ci => "/user3/article/pull"
    Plusieurs utilisateurs auront l'article pull dans leurs articles et si j'essaie d'accéder en tant que user3 à cette même route j'aurais une 403 (j'utilise un voter) parce que SF va d'abord récupérer le premier article "pull" qu'il trouve et qui appartient à "user1".
    Je recherche le moyen de faire un find() et d'y afficher le slug.
    J'espère avoir été assez clair car c'est difficile à bien l'expliquer, j'ai épluché la doc du @ParamConverter, de @Entity et des routes mais je n'ai rien trouvé qui puisse m'aider ou alors je suis totalement passé à côté.

    Un coup de main ?

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2020
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2020
    Messages : 119
    Points : 64
    Points
    64
    Par défaut
    ajoute un slug juste avant {article_id}, car c'est içi que tu veux modifier le nom si je comprends bien

    astuce: en spécifiant ton entité dans le paramètre de ta fonction (ex: Entity $entity) cela va lire directement l'id passé dans ta route, sans que tu ais besoin de faire un find (il le fera à ta place).

    Tu as bien ajouté ton getter et ton setter dans ton entité pour le slug ? et lui passer en paramètre le nom que tu veux dans ton url....

  3. #3
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Novembre 2018
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Novembre 2018
    Messages : 58
    Points : 48
    Points
    48
    Par défaut
    Je ne comprend pas trop l'utilité de mettre un slug avant l'article id. J'utilise le paramConverter car je "lis" 2 entités dans la route, la 1ère c'est le slug du User et la 2ème ( article_id) est l'id de l'article mais j'aimerais fetch l'id de l'article mais afficher le slug de la route

Discussions similaires

  1. DVD plein... mais affiché vide !!!
    Par Pahcixam dans le forum Périphériques
    Réponses: 5
    Dernier message: 20/05/2006, 13h08
  2. [VBA-E] faire la moyenne et afficher dans une cellule
    Par tibss dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 15/05/2006, 17h03
  3. Réponses: 11
    Dernier message: 15/05/2006, 14h13
  4. Réponses: 3
    Dernier message: 03/01/2006, 21h43
  5. Réponses: 3
    Dernier message: 16/12/2005, 11h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo