Pour la traduction, il suffit de mettre en place le module i18n et d'indiquer dans le settings.yml que default_culture: fr. Et hop, 95% de l'interface de sfGuardPlugin est traduite... Sans action particulière. Sinon, une petite lecture du code permet de savoir que le fichier xml i18n où tu personnaliseras ta traduction est souvent sf_admin.xml (dans le répertoire /apps/myApp/i18n/fr) sinon messages.xml
Pas besoin de réécrire le template ou les classes -----Message d'origine----- De : [email protected] [mailto:[email protected]] De la part de chakir ezziani Envoyé : jeudi 10 septembre 2009 17:24 À : [email protected] Objet : [symfony-fr] Re: personnalisation Signin Form salut, le formulaire s'affiche on appelant le sfGuardAuth , on executant signinSuccess: <form action="<?php echo url_for('@sf_guard_signin') ?>" method="post"> <table> <?php echo $form ?> </table> <input type="submit" value="Connexion" /> </form> voila mnt la form : class sfGuardFormSignin extends sfForm { public function configure() { $this->setWidgets(array( 'username' => new sfWidgetFormInput(), 'password' => new sfWidgetFormInput(array('type' => 'password')), 'remember' => new sfWidgetFormInputCheckbox(), )); $this->setValidators(array( 'username' => new sfValidatorString(), 'password' => new sfValidatorString(), 'remember' => new sfValidatorBoolean(), )); $this->validatorSchema->setPostValidator(new sfGuardValidatorUser()); $this->widgetSchema->setNameFormat('signin[%s]'); } et le validateur du form: class sfGuardValidatorUser extends sfValidatorBase { public function configure($options = array(), $messages = array()) { $this->addOption('username_field', 'username'); $this->addOption('password_field', 'password'); $this->addOption('rememeber_checkbox', 'remember'); $this->addOption('throw_global_error', false); $this->setMessage('invalid', 'veuillez vérifier vos informations.'); } protected function doClean($values) { $username = isset($values[$this->getOption('username_field')]) ? $values[$this->getOption('username_field')] : ''; $password = isset($values[$this->getOption('password_field')]) ? $values[$this->getOption('password_field')] : ''; $remember = isset($values[$this->getOption('rememeber_checkbox')]) ? $values[$this->getOption('rememeber_checkbox')] : ''; // user exists? if ($user = sfGuardUserPeer::retrieveByUsername($username)) { // password is ok? if ($user->checkPassword($password)) { return array_merge($values, array('user' => $user)); } } if ($this->getOption('throw_global_error')) { throw new sfValidatorError($this, 'invalid'); } throw new sfValidatorErrorSchema($this, array($this->getOption('username_field') => new sfValidatorError($this, 'invalid'))); } } pour l'erreur "invalid' je l'ai converti en fraçais dans le validateur mai elle reste a sa place lorsqu'elle s'affiche et si je laisse un champs vide l'erreur "required" s'affiche en déformant le formulaire, et elle doi etre en français!!!! vraiment j'ai gaspier beaucoup de temps sur ça, je commence a regretter l'utilisation de symfony cordialement Le 10 septembre 2009 14:17, Mikael Randy <[email protected]> a écrit : Soit patient, on a tous une vie ;-) Comment est-ce que tu affiches ton formulaire ? Le 10 septembre 2009 16:02, chakir ezziani <[email protected]> a écrit : salut toujours pas de réponse les symfoniens?!!!! Le 10 septembre 2009 10:33, chakir ezziani <[email protected]> a écrit : Bonjour Mikael, j'ai essayé le bout de code que tu m'as envoyé et j'arrive a afficher les erreurs un peu loin des champs de saisie, mais aussi il reste les ereeurs sur chaque champs !!! pour l'erreur invalid on peu la modifier dans le validateur sfGuardValidatorUser mais pour l'erreur "required" j'ai pas trouvé ou l'instruction responsable de la renvoyé !!!!!? Le 10 septembre 2009 09:44, Mikael Randy <[email protected]> a écrit : Il n'existe pas de fonction renderError() (et pourtant dieu sais que ça serait pratique). Par contre, il est relativement simple de récupérer les erreurs d'un formulaire : <?php if( $form->getErrorSchema()->count() > 0 ) : ?> <ul> <?php foreach( $form->getErrorSchema()->getErrors() as $field => $message ): ?> <li><?php echo $message ?></li> <?php endforeach ?> </ul> <?php endif ?> Le 1er if permet de contrôler s'il y a des erreurs, le foreach récupère toutes les erreurs et les affiches une à une. $field contient le nom du champ concerné et $message le message d'erreur en question. Le 10 septembre 2009 11:31, sweetgirl <[email protected]> a écrit : Bonjour à tous, j'ai un probleme avec le formulaire d'identification au backend de mon site, le soucis c'est au niveau des messages d'erreurs ;qui s'affichent lorsque le username ou le password est incorrect ou pas saisie; Donc l'affichage de ces erreurs déforme tt le formulaire qui sort de son conteneur ..... ce que je veux c'est faire personnaliser ce formulaire et faire une "div" apart qui va contenir ces erreurs et les faire en français, mai le probleme c'est ou modifier ?? ou sont les fonctions rendererrors()?? Cordialement --~--~---------~--~----~------------~-------~--~----~ Vous avez reçu ce message, car vous êtes abonné au groupe Groupe "Symfony-fr" de Google Groupes. Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse [email protected] Pour résilier votre abonnement à ce groupe, envoyez un e-mail à l'adresse [email protected] Pour afficher d'autres options, visitez ce groupe à l'adresse http://groups.google.com/group/symfony-fr?hl=fr -~----------~----~----~----~------~----~------~--~---
