Установите флажок при использовании декоратора viewScript в Zend Form - PullRequest
2 голосов
/ 19 сентября 2010

У меня есть zend_form с флажком:

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

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

Мой пользовательский viewScript checkbox.phtml выглядит так:

<?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>

Красиво рендерится, но когда я заполняю форму из записи базы данных:

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

Флажок не установлен. Есть ли что-то, что мне нужно установить в моем viewScript, чтобы он мог заполняться?

1 Ответ

3 голосов
/ 20 сентября 2010

Вы должны установить флажок в вашем html-представлении после заполнения значения.

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