Как я могу динамически создавать несколько флажков с Zend Form? - PullRequest
2 голосов
/ 26 февраля 2012

Не могли бы вы помочь мне решить мою проблему?
Я хотел бы поставить флажок в каждой строке списка пользователей, созданных с использованием базы данных, и добавить кнопку проверки, чтобы опубликовать мою форму. Мой список должен выглядеть примерно так: -

Diagram of form

Таким образом, пользователь установит флажок, связанный со студентом, которого он хочет подтвердить. Количество строк результата является переменным, поэтому я не знаю, как это сделать. Надеюсь, я ясно изложил свое описание.

Ответы [ 2 ]

0 голосов
/ 27 февраля 2012

Вы не показали никакого кода, но я предполагаю, что вы получите количество студентов где-то в вашем контроллере.

Чтобы достичь того, что вы хотите с Zend_Form, вам нужно будет визуализировать каждый элемент по отдельности,но сначала вам нужно найти способ добавления правильного количества элементов в форму.

Желательно, чтобы вы делали это в своем классе формы, чтобы не допустить логику в контроллер, но чтобы этот ответ был простымЯ покажу вам, как этого добиться в вашем контроллере, затем вы можете адаптировать код по своему усмотрению.

$numStudents = getNumberOfStudentsSomehow();
$studentForm = new yourFormClass();

for($i = 0; $i <= $numStudents; $i++){
    $checkBoxes[] = new Zend_Form_Element_Checkbox('checkBox_' . $i);
}
$studentForm->addElements($checkBoxes);
$this->view->studentForm = $studentForm;

Ваша форма теперь содержит правильное количество флажков, и вы можете передать ееview.
В представлении у вас есть несколько вариантов рендеринга формы, либо частичное представление, предложенное RockyFord , помощник вида ( документация здесь ), создайте сценарий пользовательского представления для своей формы или выполните рендеринг непосредственно в своем представлении.

Для начала вы можете визуализировать отдельные элементы из себя.Форма r на ваш взгляд, как это: -

echo $this->view->studentForm->checkBox_0;
0 голосов
/ 27 февраля 2012

Я думаю, что это может быть ситуация, когда partaloop () может быть лучшим решением.

в вашем контроллере, как обычно, получите данные от модели и присвойте им данные для представления.

$this->view->modelData= $data;

затем создайте новый файл .phtml в /views/scripts для этой демонстрации.Я назову его _demoRow.phtml, затем закодирую html и php для одной строки таблицы (в данном случае).

<tr>
    <td><?php echo $this->name ?></td>
    <td><?php echo $this->class ?></td>
    <td><?php echo $this->birth_date ?></td>
    <td><input type="checkbox" name="id" value="<?php echo $this->id ?> /></td>
</tr>

Затем в обычном представлении просто поместите статическую информацию и отредактируйте частичный

* 1013.*

Это должно приблизительно соответствовать тому, что вы ищете.

...