【问题标题】:how to remove fields from form class and view如何从表单类和视图中删除字段
【发布时间】:2019-12-27 15:39:38
【问题描述】:
根据调用表单的位置,我想删除一些未使用的字段。
我在控制器类中尝试了以下操作:
switch ($typ){
case 3: //Analyse
$form->get('analyseid')->setValue($id); //works
$form->remove('vertragid'); //doesn't work
break;
}
我收到一些错误:
在表单中找不到名为 [vertragid] 的元素
\wiedervorlage\add.phtml(25): Zend\Form\Fieldset->get('vertragid')
当然,我会尝试在 view.phtml 脚本中获取属性。
我的问题是:如何从表单和视图中删除字段。
【问题讨论】:
标签:
zend-form
zend-framework3
【解决方案1】:
虽然我不太喜欢这种变通方法,但这里的解决方案非常简单。
如果您需要删除在某些条件下给出的某些元素,您可以使用以下行从控制器中删除它们:
switch ($typ) {
case 3:
// Remove the element 'vertragid'
$form->remove('vertragid');
// Remove inputfilters. This is necessary, because if the element
// is required, the inputfilter will always block the validation
// of the form
$form->getInputFilter()->remove('vertragid');
break;
}
为避免您的视图出现错误,您必须检查该元素是否存在于表单中:
if ($form->has('vertragid')){
echo $this->formRow($form->get('vertragid');
}