хорошо, так что ответ будет более длинным
Форма
</p>
<pre><code><?php
class Form_MyTest extends Zend_Form
{
public function init()
{
$element = $this->createElement('multiCheckbox', 'subscribers');
$element->setOptions(array('value1' => 'label1', 'value2' => 'label2'));
$this->addElement($element);
// ... other elements
}
}
Контроллер
</p>
<pre><code><?php
class MyController extends Zend_Controller_Action
{
public function myTestAction()
{
$form = new Form_MyTest();
// ... processing logics
$this->view->assign('form', $form);
}
}
Посмотреть
</p>
<pre><code><form action="<?php echo $this->form->getAction(); ?>" method="<?php echo $this->form->getMethod(); ?>">
<table>
<thead>
<tr>
<th>Select</th>
<th>Number</th>
<th>Name</th>
</tr>
</thead>
<?php $values = $this->form->getElement('subscribers')->getValue(); ?>
<?php foreach($this->form->getElement('subscribers')->getMultiOptions() as $key => $value) : ?>
<tr>
<td><input type="checkbox" name="subscribers[]" id="subscribers-<?php echo $key; ?>" value="<?php echo $key; ?>" <?php echo in_array($key, $values) ? 'checked="checked"':''; ?>/></td>
<td><label for="subscribers-<?php echo $key; ?>"><?php echo $key; ?></label></td>
<td><label for="subscribers-<?php echo $key; ?>"><?php echo $value; ?></label></td>
</tr>
<?php endforeach; ?>
</table>
<!-- rest of form -->
</form>
Здесь происходит пара вещей.
Я получаю предварительно заполненные значения из объекта формы:
</p>
<pre><code><?php $values = $this->form->getElement('subscribers')->getValue(); ?>
Я отмечаю каждый флажок как проверенный или не основанный на массиве выше
</p>
<pre><code><?php echo in_array($key, $values) ? 'checked="checked"':''; ?>
РЕДАКТИРОВАТЬ В ОТВЕТ НА КОММЕНТАРИЙ B / C КОММЕНТАРИИ НЕ ПОДДЕРЖИВАЮТ БЛОКИ
$element->setOptions(
или
$element->setMultiOptions(
принимает только пары ключ => значение, поэтому все, что вы хотите сделать вне пар ключ / значение, будет немного странным. Если ваша программа позволяет передавать в переменную другую переменную, массив, который использует те же ключи, что и multiCheckbox,
$this->view->assign('more_datums', array('value1' => array('col_1' => 'col_1_val'[, ...])));
и затем в foreach в представлении используйте
$this->more_datums[$key]['col_1']