你能帮我解决一下我的问题吗? 我想在使用数据库信息构建的用户列表的每一行上放置一个复选框,并添加一个验证按钮来发布我的表单。我的列表应该是这样的: -
因此,用户将选择链接到他想要验证的学生的复选框。 结果的行数是可变的,所以我不知道该怎么做。 我希望我的描述中已经清楚了。
答案 0 :(得分:0)
您没有显示任何代码,但我假设您获得了控制器中某处的学生人数。
要使用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;
现在,您的表单中包含正确数量的复选框,您可以将其传递给视图 在视图中,您可以使用多种方式呈现表单,RockyFord建议的视图部分,view helper(documentation here),创建custom view script for your form或直接渲染在你看来。
为了让您入门,您可以在视图中渲染表单中的各个元素,如下所示: -
echo $this->view->studentForm->checkBox_0;
答案 1 :(得分:-1)
我认为这可能是partialLoop()可能是最佳解决方案的情况。
像往常一样从模型中获取数据并将数据分配给视图
$this->view->modelData= $data;
接下来在/views/scripts
中为这个演示创建一个新的.phtml文件,我们将其称为_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>
然后在普通视图中输入静态信息并渲染部分
<form action="/your/action/url" method="post">
<table class="spreadsheet" cellspacing="0">
<tr>
<th>Student Name</th>
<th>Class</th>
<th>Birth Date</th>
<th>Select</th>
</tr>
<?php echo $this->partialLoop('_demoRow.phtml', $this->modelData) ?>
<tr>
<input type="submit" name="submit" value="valider" />
</tr>
</table>
</form>
这应该接近你正在寻找的东西。