Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 24-07-2008 18:26:03

grandlap
Membre
Date d'inscription: 22-07-2008
Messages: 50

[Zend_Form][1.5] balise de glossaire et formulaires

Salut,

je ne veux pas faire le râleur (trop tard wink) mais quand même, je croyais que dl, dd et dt c'étaient des balises pour les glossaire. Or les formulaires ne sont pas des glossaires ! Pourquoi ce choix de balise par défaut ? C'est un scandale ! Que fait la police ?!

Bon, plus sérieusement, est-il possible de le changer pour tout le projet comme on peut assigner un defaultTranslator ou dois-je créer ma classe de form en changeant les decorators comme décrit ici (http://www.z-f.fr/forum/viewtopic.php?id=777)  ?


Merci bien

Hors ligne

 

#2 24-07-2008 19:08:56

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: [Zend_Form][1.5] balise de glossaire et formulaires

Hello,

Si tu savais le nombre de mails échangés sur la liste des développeurs du ZF sur le sujet !

Tu peux changer les décorateurs à chaque fois que tu crée un Zend_Form_Element_*.

J'ai étendu tous les Zend_Form_Element_* en modifiant la méthode loadDefaultDecorators() :

Code:

// exemple
class Mp_Form_Element_Text extends Zend_Form_Element_Text
{

    public function __construct ($name, $options = null)
    {
        parent::__construct($name, $options);
        $this->setAttrib('class', 'text');
    }

    /**
     * Load default decorators
     * @return void
     */
    public function loadDefaultDecorators ()
    {
        if ($this->loadDefaultDecoratorsIsDisabled()) {
            return;
        }
        $decorators = $this->getDecorators();
        if (empty($decorators)) {
            $this->addDecorator('ViewHelper')
                 ->addDecorator('Errors')
                 ->addDecorator('Label', array('class' => 'label'))
                 ->addDecorator('HtmlTag', array('tag' => 'div', 'class' => 'element'));
        }
    }
}

J'ai aussi étendu Zend_Form pour qu'il charge mes éléments avant ceux du ZF :

Code:

class Mp_Form extends Zend_Form
{
    public function __construct ($options = null)
    {
        require_once 'Zend/Form/Element.php';
        $this->setAttrib('class','non_print');
        parent::__construct($options);
        if ($this->db === null) {
            $this->db = self::getDefaultAdapter();
        }
        $this->addElementPrefixPath('Mp_Validate', '../library/Mp/Validate', Zend_Form_Element::VALIDATE);
        $this->addPrefixPath('Mp_Form_Element', '../library/Mp/Form/Element/', Zend_Form::ELEMENT);
        $this->setDefaultDisplayGroupClass('Mp_Form_DisplayGroup');
        $this->clearDecorators();
        $this->addDecorator('FormElements')->addDecorator('Fieldset')->addDecorator('Form');
    }
}

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#3 25-07-2008 08:56:03

grandlap
Membre
Date d'inscription: 22-07-2008
Messages: 50

Re: [Zend_Form][1.5] balise de glossaire et formulaires

Salut,

oui j'imagine, c'est le genre de sujet bien polémique big_smile

Merci pour ta réponse, je vais regarder ça de plus près

Hors ligne

 

#4 25-07-2008 11:27:15

grandlap
Membre
Date d'inscription: 22-07-2008
Messages: 50

Re: [Zend_Form][1.5] balise de glossaire et formulaires

Encore moi,

En fait dans ton cas, Mp_Form est-il censé instancier ton formulaire lorsque tu fais addElement de ce type

Code:

$form->addElement('text', 'myInput');

ou passes tu toujours par un new Mp_Form_Element_Text(); ?


chez moi le addElement fonctionne uniquement si je place la ligne addPrefixPath avant d'appeler le constructeur de la super calsse


ce qui me donne qqc comme ça

Code:

    public function __construct ($options = null)
    {
        require_once 'Zend/Form/Element.php';
        $this->addPrefixPath('Lap_Form_Element', '../library/Lap/Form/Element/', Zend_Form::ELEMENT);
        parent::__construct($options);
    }

J'avoue ne pas être allé fouiller plus loin pour savoir le pourquoi et le comment...

Merci

lap

Hors ligne

 

#5 25-07-2008 13:11:25

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: [Zend_Form][1.5] balise de glossaire et formulaires

Hello,

En fait le addPrefixPath ajoute un dossier dans lequel rechercher des Zend_Form::ELEMENT, ayant un préfixe Lap_Form_Element

Donc si tu as défini une classe Lap_Form_Element_Text :

Code:

$form = new Mp_Form; // <-- pas un Zend_Form bien évidemment
$form->addElement('text', 'myInput');

va la charger avant un Zend_Form_Element_Text

Par contre si tu ne défini pas de Lap_Form_Element_Submit (par exemple)

Code:

$form->addElement('submit', 'monSubmit');

va charger un Zend_Form_Element_Submit

OK ?

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#6 28-07-2008 09:46:53

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [Zend_Form][1.5] balise de glossaire et formulaires

Or les formulaires ne sont pas des glossaires ! Pourquoi ce choix de balise par défaut ? C'est un scandale ! Que fait la police ?!

Perso je me suis dis "s'il ont choisi ça, c'est que ça doi être correcte"
Alors je m'en contre tape, je les change si vraiment j'en ai besoin mais en générél, je passe un simple coup de CSS et basta smile
PS: et puis dans le fond c'est pas si mal utilisé quand on regarde les spéc de ces éléments HTML: http://www.w3.org/TR/2002/WD-xhtml2-200 … -list.html

Hors ligne

 

#7 29-07-2008 13:32:58

grandlap
Membre
Date d'inscription: 22-07-2008
Messages: 50

Re: [Zend_Form][1.5] balise de glossaire et formulaires

rha, c'est sûr que c'est pas moi qui vais donner des leçons big_smile, je ne peux pas dire que je suis le développeur le plus rigoureux... hum

Cela étant, comme il est dit dans la doc, il s'agit de liste de définitions (definition list, definition (list) term, definition (list) definition) et un champ n'est pas une définition à son label.
C'est tout con, mais par exemple, en terme d'accessibilité, ça peut induire en erreur (ou plutôt agacer l'utilisateur ^^)

Après, c'est je l'avoue, pinailler sur des détails, mais c'est aussi comme ça qu'on avance !

a+

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages