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

Zend_Form PHP Discussion :

Validation W3C [ZF 1.9]


Sujet :

Zend_Form PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2009
    Messages : 115
    Par défaut Validation W3C
    Bonjour à tous.

    Ça fait un moment que je cherche la solution sur le net mais je n'ai pas trouvé. Et j'espère sincèrement que vous allez pouvoir m'aider. Même un petit peu.

    Il y a certaines parties de Zend_Form qui ne sont pas valide W3C voilà un exemple :
    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
     
    $form = new Zend_Form;
    $form->setAction('/resource/process')
        ->setMethod('post');
     
    $check = new Zend_Form_Element_MultiCheckbox('foo', array(
    'multiOptions' => array(
        'foo' => 'Foo Option',
        'bar' => 'Bar Option',
        'baz' => 'Baz Option',
        'bat' => 'Bat Option',
    )));
    $check->setValue(array('bar', 'bat'));
    $check->setLabel('check');
     
    $form->addElements(array($check));
     
    echo $form;
    Ce qui donne en HTML ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <form enctype="application/x-www-form-urlencoded" action="/resource/process" method="post"><dl class="zend_form">
    <dt id="foo-label"><label for="foo" class="optional">check</label></dt> <---- ERROR
    <dd id="foo-element">
    <label for="foo-foo">
    <input type="checkbox" name="foo[]" id="foo-foo" value="foo" />Foo Option</label><br />
    <label for="foo-bar"><input type="checkbox" name="foo[]" id="foo-bar" value="bar" checked="checked" />Bar Option</label><br />
    <label for="foo-baz"><input type="checkbox" name="foo[]" id="foo-baz" value="baz" />Baz Option</label><br />
    <label for="foo-bat"><input type="checkbox" name="foo[]" id="foo-bat" value="bat" checked="checked" />Bat Option</label>
    </dd></dl></form>
    Ce n'est pas valide parce que W3C dit que for="foo" n'a pas de référence. Seriez-vous m'expliquer comment régler ce problème ?

    Merci d'avance
    Cordialement.

  2. #2
    Membre émérite
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Par défaut
    D'apres w3c, voici la dtd du tag label :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <!ELEMENT LABEL - - (%inline;)* -(LABEL) -- form field label text -->
    <!ATTLIST LABEL
      %attrs;                              -- %coreattrs, %i18n, %events --
      for         IDREF          #IMPLIED  -- matches field ID value --
      accesskey   %Character;    #IMPLIED  -- accessibility key character --
      onfocus     %Script;       #IMPLIED  -- the element got the focus --
      onblur      %Script;       #IMPLIED  -- the element lost the focus --
      >
    En gros, for est un IDREF, il doit donc avoir un id avec le meme nom dans le document, normalement a l'interieur de ses balises, comme dans les lignes suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <label for="foo-bar"><input type="checkbox" name="foo[]" id="foo-bar" value="bar" checked="checked" />Bar Option</label>
    Donc si tu veux vraiment être conforme à w3c, tu retires le for qui n'est pas obligatoire (implied), soit tu ajoute un element avec un id correspondant au for.

    En espérant avoir bien répondu a ta question,
    bon courage et bonnne soirée !
    Z.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2009
    Messages : 115
    Par défaut
    Merci Zwiter,

    Mais je n'arrive pas à enlever le for="foo" avec Zend_Form. Est ce que tu vois ?

  4. #4
    Membre émérite
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Par défaut
    Quasi inexistante mes connaissances en Zend sont, sur ce pointje ne puis t'aider.
    Uniquement lire les dtd je sais.
    Z.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2009
    Messages : 115
    Par défaut
    Merci de ton aide Zwiter.

    Je n'ai pas encore trouver la solution. Je cherche l'endroit ou est definit par défaut IDREF for dans le librairie de Zend.

    Personne de peut m'aider sur ce sujet ?

  6. #6
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Bonjour,

    C'est le décorateur 'Label' qui est à l'origine de cet attribut 'for'.

    Par défaut, il utilise l'identifiant de l'élément comme cible. Il est toutefois possible de le modifier en utilisant la méthode setId() de ce décorateur...

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2009
    Messages : 115
    Par défaut
    Bonjour Eusebe,

    Alors ce que j'ai fais, J'ai créer un dossier ou je mets tous mes décorateurs et j'y fais appel avec la méthode addPrefixPath() sur le formulaire.

    J'ai donc copier le Label.php dans mon dossier decorator (perso) et il se charge correctement. Par contre il n'y a que cela dans le fichier au niveau de ma méthode que tu m'a indiqué :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        public function setId($id)
        {
            $this->setOption('id', $id);
            return $this;
        }
    Je ne comprends pas comment je peux la modifier pour enlever le for. Tu peux m'en expliquer un peut plus s'il te plais ?

    Merci

  8. #8
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Je ne pensais pas que tu voulais retirer le for, mais changer sa cible...

    Si tu veux le retirer, c'est du côté de l'aide de vue FormLabel qu'il faut regarder, c'est cette aide qui est responsable de la représentation du décorateur...

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2009
    Messages : 115
    Par défaut
    Youpi

    Donc j'ai plus qu'a créer une aide de vue perso pour la remplacé et c'est rangé. Dernière petite question si j'en créer une avec le même nom mais un chemin différent ça va bien l'écrasé ?

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XHTML] Validation W3C
    Par Mister Nono dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 05/12/2005, 14h34
  2. [HTML] URLs avec variable et validation W3C
    Par pirouette_07 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 11/10/2005, 11h27
  3. validation w3c et javascript: erreur?
    Par stoyak dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/08/2005, 14h59
  4. [HTML / Viewpoint / Valid W3C] Problème de lecture
    Par zebden dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 01/02/2005, 11h15

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