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 :

Associer un callback à un champ en particulier


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
    Décembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 10
    Par défaut Associer un callback à un champ en particulier
    Bonjour,

    Je débute avec symfony et je me vois actuellement confronté à un problème disons... d'"affichage".

    Voilà comment j'affiche mes erreurs sur mon formulaire :



    Comme vous pouvez le voir, l'erreur associé à un champ donné s'affiche à droite de celui-ci. Donc ça fonctionne bien pour les erreurs associées à un champ donné. Mais lorsque ce sont des erreurs globales, comment peut-on faire ? Ou plus simplement, comment associer un callback à un champ en particulier ?

    Voici le code que j'utilise (peut-être pas trop optimisé) pour afficher l'erreur lié à un champ :

    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
     
    <li>
        <?php if ($form["pseudo"]->hasError()): ?>
        <div class="blocErrorInput">
            <label for="membre_pseudo">Nom d'utilisateur</label> 
            <?php echo $form["pseudo"]->render() ?>
            <div class="blocErrorInputDisp">
                <img src='images/design/defaut/icones/forbidden.gif' style='vertical-align:-3px;' /> <i><?php echo $form["pseudo"]->getError(); ?></i>
            </div>
        </div>
        <?php else: ?>
            <label for="membre_pseudo">Nom d'utilisateur</label> 
            <?php echo $form["pseudo"]->render() ?>
        <?php endif; ?>
    </li>
    Le truc c'est que la vérification de disponibilité d'un pseudo (s'il est déjà utilisé par un autre membre ou pas) se fait avec un CallBack qui soulève une erreur globale (qui fonctionne) mais que je ne peux pas afficher en face de chaque champ.

    Voici le code utilisé pour afficher l'erreur de "pseudo utilisé" (et email au passage) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      $this->validatorSchema->setPostValidator(
              new sfValidatorAnd
                      (
                        array(
                            new sfValidatorCallback(array('callback'=> array($this, 'checkLoginAvailability'))),
                            new sfValidatorCallback(array('callback'=> array($this, 'checkEmailAvailability')))
                            )
                      )
      );
    Si vous avez compris mon problème, pourriez-vous m'aider ?

    Merci d'avance !

  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
    Le problème ne vient pas tant du callback que du fait que ton validateur est un postValidateur.

    Ceux-ci ne sont pas attribué à un champ en particulier mais au formulaire en général.

    Tu peux parfaitement utiliser un callback sur un champ en particulier, ce qui devrait donner l'effet escompté. Tu peux aussi utiliser un validatorAnd sur un champ en particulier, si tu veux cumuler, pour se champ, plusieurs validateurs différents.

    Accessoirement, pense à sortir ton style de ton modèle et à utiliser une CSS, ton site n'en sera que plus simple à maintenir

Discussions similaires

  1. Associer un checkbox à un champ de texte
    Par n3x1n² dans le forum jQuery
    Réponses: 12
    Dernier message: 28/05/2011, 22h36
  2. Associer un code à 2 champs differents
    Par sercat dans le forum IHM
    Réponses: 3
    Dernier message: 19/05/2009, 12h41
  3. Positionnement sur un champ en particulier
    Par jep33 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 19/02/2009, 10h59
  4. Réponses: 3
    Dernier message: 08/06/2007, 11h24
  5. [MySQL] Associer lien pour les champs de ma liste
    Par nouna dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 28/10/2005, 18h59

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