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 :

Personnaliser le module d'identification


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 29
    Par défaut Personnaliser le module d'identification
    Bonjour à tous

    J'avance petit à petit dans la création de mon site avec le framework symfony. Tout va bien, seulement je suis passé à la section authentification de l'utilisateur (jour 13). J'ai créé mon administrateur, ma page d'identification fonctionne à merveille, seulement, j'aimerais pouvoir modifier la page d'identification!

    Ma question est donc la suivante : quel est le fichier à modifier pour pouvoir personnaliser cette interface ?



    Je voudrais donc modifier par exemple le "username", "password" etc... et modifier les nom des blocs pour pouvoir les personnaliser dans mon css.

    Merci d'avance à tous

  2. #2
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    M'est avis que tu travailles avec sfGuard.

    Tu as deux pistes :
    • sfGuard est prévu pour l'internationalisation, tous les libellés sont prévu pour être traduit, tu peux donc faire un fichier xliff qui reprend ces libellés et effectue la traduction.
    • tu veux faire plus que juste changer les libellés (en rajouter, changer l'ordre,...)
      Crée dossier : apps/<monApplication>/modules/sfGuardAuth/templates/
      et dans ce dossier un fichier : _signin_form.php
      c'est le partial qui affiche la form de login. Le code original est le suivant :

    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
     
    <?php use_helper('I18N') ?>
     
    <form action="<?php echo url_for('@sf_guard_signin') ?>" method="post">
      <table>
        <tbody>
          <?php echo $form ?>
        </tbody>
        <tfoot>
          <tr>
            <td colspan="2">
              <input type="submit" value="<?php echo __('Signin', null, 'sf_guard') ?>" />
     
              <?php $routes = $sf_context->getRouting()->getRoutes() ?>
              <?php if (isset($routes['sf_guard_forgot_password'])): ?>
                <a href="<?php echo url_for('@sf_guard_forgot_password') ?>"><?php echo __('Forgot your password?', null, 'sf_guard') ?></a>
              <?php endif; ?>
     
              <?php if (isset($routes['sf_guard_register'])): ?>
                &nbsp; <a href="<?php echo url_for('@sf_guard_register') ?>"><?php echo __('Want to register?', null, 'sf_guard') ?></a>
              <?php endif; ?>
            </td>
          </tr>
        </tfoot>
      </table>
    </form>
    Bonne chance.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 29
    Par défaut
    Merci pour ta réponse

    J'avais bien repéré ce fichier dans le dossier des plugins, mais après avoir analysé le code, j'ai l'impression que l'affichage du formulaire (labels et champs) est fait à l'aide de la ligne <?php echo $form ?>. Donc comment modifier ceci ?

    EDIT :

    Faut-il modifier le fichier \<nomProjet>\plugins\sfDoctrineGuardPlugin\lib\form\doctrine\sfGuardFormSignin.class.php en y insérant les widget et les validateurs ?

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2010
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 144
    Par défaut
    Attention, on ne doit jamais modifier un plugin ou tout autres éléments appartenant au "core" du framework. On procède par surcharge des fichiers/classes déjà existants.

    Pour récupérer les différents champs du formulaire rien t'empêches de faire un $form['ton_champs'] afin de placer les éléments comme tu le souhaites.

  5. #5
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Toutes les informations pour "exploser" le "echo $form" sont disponible dans cette documentation (en anglais). Cependant les exemples de code et les schémas la rende abordable pour presque tous.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 29
    Par défaut
    Merci pour vos réponses

    Voici le fichier que j'ai généré à l'aide de vos conseils :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    <form action="<?php echo url_for('@sf_guard_signin') ?>" method="post">
    	<table>
    			<tr><td>Identifiant ou adresse mail :</td><td><?php echo $form['username'] ?></td></tr>
    			<tr><td>Mot de passe :</td><td><?php echo $form['password'] ?></td></tr>
    			<tr><td>Se souvenir ?</td><td><?php echo $form['remember'] ?></td></tr>
    		<?php echo $form['_csrf_token'] ?>
    	</table>
    	<br>
    	<input type="submit" value="<?php echo __('S\'identifier', null, 'sf_guard') ?>">
     
    </form>
    Le formulaire s'affiche bien, je peux ajouter ou supprimer les champs, seulement quand l'identifiant et le mot de passe sont bons, j'accède au module, mais quand un des deux est mauvais, la page ne bouge pas et j'ai seulement un message dans la barre de débogage de symfony, qui m'indique "The username and/or password is invalid." Je voudrais que cela s'affiche sur ma page de connexion !

    Qu'ai-je oublié ?

  7. #7
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Si je ne m'abuse appelle la méthode render() du widget 'password'.

    Si ce que tu veux c'est afficher les messages d'erreur à côté des champs concernés, il faut donc travailler au niveau de chaque widget en ajoutant des appels à ses méthodes hasError() et renderError(). Idem si jamais tu as besoin d'afficher l'aide, avec renderHelp().

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <div class="field_custom <?php echo ($field->hasError() ? ' errors' : '') ?>">
        <?php
    	echo $field->render();
    	echo $field->hasError() ? $field->renderError() : '';
        ?>
        <div class="help">
    	<?php echo $field->renderHelp() ?>
        </div>
    </div>

Discussions similaires

  1. Personnalisation du module paie pour entreprise tunisienne
    Par zizou_90 dans le forum Odoo (ex-OpenERP)
    Réponses: 5
    Dernier message: 21/08/2014, 16h24
  2. [Joomla!] Personnaliser un module
    Par SISGI dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 22/06/2012, 10h55
  3. Réponses: 1
    Dernier message: 22/08/2008, 10h19
  4. [Joomla!] Position personnalisée d'un module créé
    Par masseur dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 10/08/2008, 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