Partage
  • Partager sur Facebook
  • Partager sur Twitter

Intégrer un attribut html via php (symfony & twig)

Sujet résolu
    26 janvier 2020 à 12:22:13

    Bonjour, alors je suis sur la création d'un site web et je me trouve face à un problème de t'aille (enfin pour ma part), je souhaite intégrer un attribut html 'selected' dans la balise <option> en fonction de la valeur d'une variable php.

    La partie du code html concernée:
                   
    <optgroup label="Roles">
                        <option value="ROLE_USER">User</option>
                        <option value="ROLE_ADMIN">Admin</option>
                        {% if is_granted("ROLE_SUPER_ADMIN") %}
                        <option value="ROLE_SUPER_ADMIN">Super admin</option>
                        {% endif %}
                    </optgroup>

    La fonction php concernée:

    /**
         * @Route("/admin/show_user", methods={"GET"}, name="show_user")
         */
        public function showUser()
        {
                $id = $_GET['id'];
                $repo = $this->getDoctrine()->getRepository(User::class);
                $user = $repo->find($id);
    
                $role = $user->getRoles()[0]; // return the user's role
    
                /*
                 * un petit exemple pour montrer comment j'aurais procédé pour la selection
                 */
    
                switch ($role) {
                    case 'ROLE_SUPER_ADMIN':
                        // placer l'attribut selected sur <option> avec value=ROLE_SUPER_ADMIN
                        break;
                    case 'ROLE_ADMIN':
                        // placer l'attribut selected sur <option> avec value=ROLE_ADMIN
                        break;               
                    default:
                        // placer l'attribut selected sur <option> avec value=ROLE_USER
                        break;
                }
    
                return $this->render('admin/show_user.html.twig',[
                    'user' => $user]);
        }





    -
    Edité par EctaClick 26 janvier 2020 à 17:31:08

    • Partager sur Facebook
    • Partager sur Twitter

    La révolution informatique fait gagner un temps fou aux hommes, mais ils le passent avec leur ordinateur !

      26 janvier 2020 à 20:28:30

      Tu as juste à passer la variable $role au moment du rendu Twig.
      Ensuite dans ton HTML, il te suffit de faire quelque chose comme ça.

      <optgroup label="Roles">
      	<option value="ROLE_USER"{{ role == 'ROLE_USER' ? ' selected' }}>User</option>
      	<option value="ROLE_ADMIN"{{ role == 'ROLE_ADMIN' ? ' selected' }}>Admin</option>
      	{% if is_granted("ROLE_SUPER_ADMIN") %}
      	<option value="ROLE_SUPER_ADMIN"{{ role == 'ROLE_SUPER_ADMIN' ? ' selected' }}>Super admin</option>
      	{% endif %}
      </optgroup>

      Je serais toi je passerais même un tableau $roles et boucler dessus pour générer tes options.

      Peace,

      • Partager sur Facebook
      • Partager sur Twitter
      CartoonMe
        27 janvier 2020 à 18:53:14

        Salut, merci beaucoup!:D Je n'y avais pas du tout pensé... :euh:

        -
        Edité par EctaClick 27 janvier 2020 à 18:54:02

        • Partager sur Facebook
        • Partager sur Twitter

        La révolution informatique fait gagner un temps fou aux hommes, mais ils le passent avec leur ordinateur !

        Intégrer un attribut html via php (symfony & twig)

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown