Zend framework2 ZF2-表行中的复选框
我有一个消息/电子邮件表,希望有一个复选框,可以选择多条消息,并使用表底部的按钮删除它们: 使用标准PHP/HTML非常简单,无需使用框架,您可以:Zend framework2 ZF2-表行中的复选框,zend-framework2,zend-form2,Zend Framework2,Zend Form2,我有一个消息/电子邮件表,希望有一个复选框,可以选择多条消息,并使用表底部的按钮删除它们: 使用标准PHP/HTML非常简单,无需使用框架,您可以: <input type="checkbox" name="ids[]" value="510"> <input type="checkbox" name="ids[]" value="1231"> 如果FormCollection支持插入元素,我认为这是最好的选择,因为您可以动态添加元素并在发布时循环使用它们。我设想在不
<input type="checkbox" name="ids[]" value="510">
<input type="checkbox" name="ids[]" value="1231">
如果FormCollection
支持插入元素,我认为这是最好的选择,因为您可以动态添加元素并在发布时循环使用它们。我设想在不久的将来,FormCollection
将允许添加元素,取代MultiCheckbox
和MultiRadio
的需要,因为您可以迭代FormCollection并提取各个部分
有没有其他人做过这样的事,你是怎么做的
正如我常说的:框架使困难变得容易,而简单的事情变得困难。您可以非常轻松地添加新项目:
有一个使用简单Javascript添加新行/项目的示例。您可以非常轻松地添加新项目:
这里有一个使用简单Javascript添加新行/项的示例。您是否尝试过在控制器中生成表单?例如:
public function emailAction(){
$emailList = $this->getEmailTable()->getEmails();
$emailForm = new \Zend\Form\Form();
$emailForm->setName('email_form');
foreach($emailList as $email){
$element = new \Zend\Form\Element\Checkbox($email->id);
$emailForm->add($element);
}
return new ViewModel(array('form'=>$emailForm,'list'=>$emailList));
}
然后在视图中迭代列表以生成表,并用表单封装表。别忘了创建一个删除所选提交按钮
<?php
$form = $this->form;
$form->setAttribute('action', $this->url('deleteEmail');
$form->prepare();
echo $this->form()->openTag($form);
?>
<table>
<?php foreach($this->list as $item): ?>
<tr>
<td><?php echo $this->formElement($form->get($item->id));?></td>
<td><?php echo $item->subject;?></td>
<td><?php echo $item->receipt_date;?></td>
</tr>
<?php endforeach; ?>
</table>
<?php
echo $this->formRow($form->get('submit'));
echo $this->form()->closeTag();
?>
这将被视为psudocode,可能需要一些调整才能开始工作,但希望它能让您了解如何对问题建模。可能不是最简单的。您是否尝试过在控制器中生成表单?例如:
public function emailAction(){
$emailList = $this->getEmailTable()->getEmails();
$emailForm = new \Zend\Form\Form();
$emailForm->setName('email_form');
foreach($emailList as $email){
$element = new \Zend\Form\Element\Checkbox($email->id);
$emailForm->add($element);
}
return new ViewModel(array('form'=>$emailForm,'list'=>$emailList));
}
然后在视图中迭代列表以生成表,并用表单封装表。别忘了创建一个删除所选提交按钮
<?php
$form = $this->form;
$form->setAttribute('action', $this->url('deleteEmail');
$form->prepare();
echo $this->form()->openTag($form);
?>
<table>
<?php foreach($this->list as $item): ?>
<tr>
<td><?php echo $this->formElement($form->get($item->id));?></td>
<td><?php echo $item->subject;?></td>
<td><?php echo $item->receipt_date;?></td>
</tr>
<?php endforeach; ?>
</table>
<?php
echo $this->formRow($form->get('submit'));
echo $this->form()->closeTag();
?>
这将被视为psudocode,可能需要一些调整才能开始工作,但希望它能让您了解如何对问题建模。可能不是最简单的。我也在尝试做同样的事情。你有没有想出一个办法来做这件事?我确信我在
集合
或多选
中遗漏了一些东西!如果做不到这一点,我将接受@crushedGrass的建议……我认为这在目前是不可能的。集合只能包含字段集,而不能包含单个元素。最后,我在视图中循环了一个数组,手动打印元素,我正试图做完全相同的事情。你有没有想出一个办法来做这件事?我确信我在集合
或多选
中遗漏了一些东西!如果做不到这一点,我将接受@crushedGrass的建议……我认为这在目前是不可能的。集合只能包含字段集,而不能包含单个元素。最后,我只是在视图中循环一个数组,手动打印元素