2010-08-06 2 views
0

J'ai une forme que je suis en train d'ajouter un élément de sélection simple à l'aide du php suivant:Zend Framework: Zend Form Sélectionnez Générer verbeux HTML en utilisant MultiOptions

$dateFormat = new Zend_Form_Element_Select('dateFormat'); 
     $dateFormat->setLabel('Date Format:'); 
     $dateFormat->setRequired(true)->addValidator('NotEmpty'); 
     $dateFormat->addMultiOptions(array(
      'MM/dd/yyyy' => "US Standard   - MM/dd/yyyy", 
      'dd/MM/yyyy' => "Int'l Standard  - dd/MM/yyyy", 
      'MM-dd-yyyy' => "US Standard Dash - MM/dd/yyyy", 
      'dd-MM-yyyy' => "Int'l Standard Dash - dd/MM/yyyy", 
     )); 
     $this->addElement($dateFormat,'dateFormat'); 

Il rend à la page très bien, mais il génère le code XML suivant:

<dt id="dateFormat-label"><label for="dateFormat" class="required">Date Format:</label></dt> 
<dd id="dateFormat-element"> 
<select name="dateFormat" id="dateFormat"> 
    <option value="MM/dd/yyyy" label="US Standard   - MM/dd/yyyy">US Standard   - MM/dd/yyyy</option> 
    <option value="dd/MM/yyyy" label="Int'l Standard  - dd/MM/yyyy">Int'l Standard  - dd/MM/yyyy</option> 
    <option value="MM-dd-yyyy" label="US Standard Dash - MM/dd/yyyy">US Standard Dash - MM/dd/yyyy</option> 

    <option value="dd-MM-yyyy" label="Int'l Standard Dash - dd/MM/yyyy">Int'l Standard Dash - dd/MM/yyyy</option> 
</select></dd> 

Pourquoi est-il mettre un ..label="..." dans la balise <option>? Est-ce réellement la façon dont il est censé être fait pour les normes XHTML? J'ai mon doctype défini sur XHTML Strict.

Répondre

0

Les étiquettes supplémentaires peuvent être supprimées de manière sélective. J'ai donné un exemple ci-dessous qui supprime tous les décorateurs inutiles pour un élément caché:

<?php 
... 
public function init() 
{ 
... 

$this->addElement(new Zend_Form_Element_Hidden('configId')); 
     $cid = $this->getElement('configId'); 
     $cid->removeDecorator('DtDdWrapper'); 
     $cid->removeDecorator('HtmlTag'); 
     $cid->removeDecorator('Label'); 
     $cid->setRequired(true); 
} 
... 
?> 
0

Si tout ce que vous demandez, c'est si l'étiquette d'étiquette est valide xhtml strict. Vous pouvez exécuter le code HTML via un validateur. En faisant une recherche google j'ai trouvé this website qui parle des étiquettes d'étiquettes dans les normes XHTML Strict. Cela vaut le coup d'oeil, mais je crois que c'est valide XHTML Strict.

Mais si vous voulez le valider W3C Validator Tool et voir si cela est autorisé/jette des erreurs de validation.

Si vous cherchez à l'enlever this SO Topic peut vous aider.