取决于调用表单的位置,我想删除一些未使用的字段。我从控制器类中尝试了以下方法:
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 skript中获取属性。
我的问题是:如何也从表单和视图中删除字段。
虽然我并不是这种解决方法的真正拥护者,但是这里的解决方案非常简单。
如果需要删除某些条件下给定的某些元素,则可以使用以下几行从控制器中删除它们:
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');
}