2010-09-19 2 views
2

J'ai un Zend_Form avec une case à cocher:Peupler une case à cocher lors de l'utilisation d'un décorateur viewScript dans Zend Form

$horz = new Zend_Form_Element_Checkbox('horizontal'); 
$horz->setLabel('Display horizontally?'); 

$horz->setDecorators(array(array('ViewScript', array('viewScript' => 'partials/forms/checkbox.phtml')))); 

Ma coutume viewScript checkbox.phtml ressemble à ceci:

<?php 
$name = $this->element->getName(); 
$attrs = $this->element->getAttribs(); 
    $options = $attrs['options']; 
?> 
<dt id="<?= $name ?>-element"> 
<input type="hidden" value="<?= $options['uncheckedValue'] ?>" name="<?= $name ?>" /> 
<label> 
    <input type="checkbox" class="checkbox" value="<?= $this->element->getValue() ?>" id="<?= $this->element->getId() ?>" name="<?= $name ?>"> 
    <?= $this->element->getLabel(); ?> 
</label> 
</dt> 

Il rend magnifiquement, mais lorsque je remplis le formulaire à partir d'un enregistrement de base de données:

$record = array('horizontal'=>1); 
$form->populate($record); 

La case à cocher n'est pas cochée. Y a-t-il quelque chose que je dois définir dans mon viewScript pour lui permettre de peupler?

Répondre

3

Vous devez cocher la case dans votre script de vue html une fois la valeur renseignée.

<input type="checkbox" class="checkbox" value="<?= $this->element->getValue() ?>" id="<?= $this->element->getId() ?>" name="<?= $name ?>" <?php echo $this->element->isChecked() ? " checked=\"checked\"" : "" ?> /> 
Questions connexes