2010-07-14 5 views

Répondre

4

Les décorateurs sont une façon d'envelopper vos éléments de formulaire.

Dans Zend/form.php vous pouvez voir la configuration par défaut:

/** 
* Load the default decorators 
* 
* @return void 
*/ 
public function loadDefaultDecorators() 
{ 
    if ($this->loadDefaultDecoratorsIsDisabled()) { 
     return $this; 
    } 

    $decorators = $this->getDecorators(); 
    if (empty($decorators)) { 
     $this->addDecorator('FormElements') 
      ->addDecorator('HtmlTag', array('tag' => 'dl', 'class' => 'zend_form')) 
      ->addDecorator('Form'); 
    } 
    return $this; 
} 

plus Zend/FormElements.php utilise ses propres décorateurs:

/** 
* Load default decorators 
* 
* @return Zend_Form_Element 
*/ 
public function loadDefaultDecorators() 
{ 
    if ($this->loadDefaultDecoratorsIsDisabled()) { 
     return $this; 
    } 

    $decorators = $this->getDecorators(); 
    if (empty($decorators)) { 
     $this->addDecorator('ViewHelper') 
      ->addDecorator('Errors') 
      ->addDecorator('Description', array('tag' => 'p', 'class' => 'description')) 
      ->addDecorator('HtmlTag', array('tag' => 'dd', 
              'id' => $this->getName() . '-element')) 
      ->addDecorator('Label', array('tag' => 'dt')); 
    } 
    return $this; 
} 

Vous pouvez remplacer les décorateurs par défaut pour chaque élément ou pour l'ensemble du formulaire:

$element->setDecorators(array(
    'ViewHelper', 
    'Description', 
    'Errors', 
    array(array('elementDiv' => 'HtmlTag'), array('tag' => 'div')), 
    array(array('td' => 'HtmlTag'), array('tag' => 'td')), 
    array('Label', array('tag' => 'td')), 
)); 

Il existe un podcast très simple expliquant comment décorateurs travaillent:

http://feeds.feedburner.com/ZendScreencastsVideoTutorialsAboutTheZendPhpFrameworkForiPhone

Regardez la vidéo intitulée: Zend_Form Décorateurs Explained

+0

merci beaucoup, mais ma question est pourquoi et non how.I dire que je ne sais pas pourquoi doivent être des balises dd ajouté par zend_form - soo je demande si existe une raison spéciale pour cela – Yosef

+0

Il est juste un moteur de recherche et un lecteur d'écran amical présentation du formulaire. – jantimon

+0

Principalement c'est parce qu'il est rendu correctement même sans styles. En outre, il a une certaine sémantique. dt (terme) - label & dd (définition) - élément. Peut être lu "nom d'utilisateur est cet élément" :) Je sais que ce serait mieux dans l'autre sens, mais ça aurait l'air bizarre;) –

Questions connexes