|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : février 2011 Messages : 21 ![]() |
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 |
|
|
00
|
|
|
#2 | ||
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
M'est avis que tu travailles avec sfGuard.
Tu as deux pistes :
Code :
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
||
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : février 2011 Messages : 21 ![]() |
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 ? |
|
|
00
|
|
|
#4 |
|
Membre régulier
![]() Guillaume M. Inscription : décembre 2010 Messages : 58 ![]() |
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. |
|
00
|
|
|
#5 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
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.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
|
|
#6 | ||
|
Invité de passage
![]() Inscription : février 2011 Messages : 21 ![]() |
Merci pour vos réponses
Voici le fichier que j'ai généré à l'aide de vos conseils : Code :
Qu'ai-je oublié ? |
||
|
|
00
|
|
|
#7 | ||
|
Membre chevronné
![]() Développeur Web Inscription : mars 2005 Messages : 769 ![]() |
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 :
|
||
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : février 2011 Messages : 21 ![]() |
Génial, merci beaucoup ça fonctionne ! Faut que je revoie un peu la mise en forme, et c'est bueno
Par contre, j'ai mis ton code pour chaque champ, mais à chaque le "username and/or password is invalid" vient se loger entre les deux champs ^^ Comment le déplacer ? De plus, Où aller pour modifier le texte de ce message d'erreur ? |
|
|
00
|
|
|
#9 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
Pour le déplacer, il faut revoir ton schéma HTML...
Pour le traduire, les form sont prévu pour être internationalisé, le plus simple est de faire un fichier xliff de traduction.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
|
|
#10 | ||
|
Invité de passage
![]() Inscription : février 2011 Messages : 21 ![]() |
Pour l'internationalisation, c'est prévu pour ma prochaine étape
Par contre, en ce qui concerne la mise en page de ce formulaire d'identification, j'avoue être complètement perdu... Voici mon code : Code :
![]() Pourtant, le message "invalid password..." s'affiche systématiquement sur la ligne de l'identifiant ! Ce que je voudrais, c'est qu'il s'affiche au dessus du formulaire, mais je ne vois pas quelle instruction déplacer !! |
||
|
|
00
|
|
|
#11 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
Le test est global pour le mot de passe et le login, ils constituent un tout inséparable. De tête, c'est sur le validateur du nom que ce fait le test, donc le message d'erreur apparaît pour le nom. A noter que le message est le même si le nom est mal saisi.
Pour le reste du code : Évites les div dans un tableau ! Tu mets les libellés en dur dans ton template. Hors ils sont gérés par le form et peuvent avantageusement être récupérés par un renderName() (?). La balise P dans le tableau présente peu d'avantage. La balise CENTER est dépréciée et ne devrait plus être utilisée. En fait, je ne vois pas l'intérêt que tu as à redéfinir le form alors que tu en sort un équivalent. Un peu de travail sur les CSS devrait largement suffire à obtenir le rendu que tu souhaites. Il est possible de regrouper tous les messages d'erreur en haut d'un écran, il faut faire une boucles foreach sur les widgets défini, vérifier s'ils ont une erreur (hasError) et le cas échéant afficher le message. Vu que tu n'en as que deux, tu dois pouvoir te passer de la boucle et faire les deux tests directement. N'oublie pas d'afficher les erreurs globales éventuels. N'oublie pas d'afficher les champs cachés.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
|
|
#12 |
|
Invité de passage
![]() Inscription : février 2011 Messages : 21 ![]() |
Bonjour
En fait, si je voulais le redéfinir, c'était pour pouvoir appliquer un CSS spécial. Si je garde le formulaire de base, dans quel CSS vais-je paramétrer la mise en forme ? S'agit-il du CSS admin ? Je me rends compte que je suis vraiment perdu sur les formulaires dans symfony... EDIT : Je pense finalement que c'est le default.css dans le dossier \web\sfDoctrinePlugin\css\default.css. Du coup, je vais m'attaquer à la traduction avec un fichier xliff. Mais en exécutant la tâche "symfony i18n:extract backend fr --auto-save", il ne me trouve pas les "Username" , "Password" etc... |
|
|
00
|
|
|
#13 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
En fait il est possible de construire un dossier :
apps/<monApplication>/modules/sfGuardAuth/config/ dans lequel on peut mettre un fichier view.yml et y définir un paramètre stylesheet avec les css a utiliser pour ce module ou pour juste l'action. Il est alors possible de charger une css supplémentaire uniquement pour le module auth. Les paramètres de CSS qui y seront définit venant surcharger ceux préexistant dans la default.css ou mains.csss suivant le cas. La commande est un peu légère dans sa mise en place. Elle ne considère que les commandes i18n présentes dans les templates, pas celle dans les form. Ce qui ne les empêches pas de fonctionner.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
|
|
#14 | ||
|
Invité de passage
![]() Inscription : février 2011 Messages : 21 ![]() |
Ce qui signifie que si je modifie le \apps\backend\i18n\fr\messages.xml généré, en ajoutant par exemple :
Code :
all: .settings: i18n: on default_culture: fr_FR Que manque-t-il ? |
||
|
|
00
|
|
|
#15 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
Supprime le dossier cache à la main. Tous le contenu (sauf le dossier lui même). Avant tout essais sur le i18n. C'est un bug connu. Possible que tu sois dedans.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
|
|
#16 |
|
Invité de passage
![]() Inscription : février 2011 Messages : 21 ![]() |
J'ai beau supprimer ce dossier, rien à faire... j'ai du oublier quelque chose par là...
|
|
|
00
|
|
|
#17 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
Je viens de vérifier.
Le plugin est livré avec des fichier xliff déjà existant pour le français et l'espagnol. Je pense que tu es tombé sur un autre bug de l'i18n (ne t'inquiète pas, il n'y en a que deux)(de référencé du moins !). Modifie le default_culture: en fr. Ensuite suppression manuel de cache et test.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
|
|
#18 |
|
Invité de passage
![]() Inscription : février 2011 Messages : 21 ![]() |
Bonjour
Bon j'ai réussi à traduire toute mon interface d'administration, mais le module d'identification reste en anglais. Je dois voir un connaisseur en symfony dans les jours qui viennent, je lui en parlerai, il aura le code sous yeux.En tout cas, merci beaucoup pour tout Et bonne journée ! |
|
|
00
|
|
|
#19 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
Tous les fichiers de traductions passent sauf celui du login
J'ai vu en passant qu'il y a au moins un libellé traduit qu'il n'est pas bon, il y a peut-être plus qu'un libellé, mais tous, cela fait beaucoup. Tiens nous au courant...
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
|
|
#20 | ||
|
Invité régulier
![]() Inscription : septembre 2009 Messages : 22 ![]() |
Bonjour !
Pour traduire le module d'identification je suppose qu'il faut placer un fichier settings.yml dans le dossier config du plugin sfGuardDoctrinePlugin : Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com