如何从表单 class 中删除字段并查看

how to remove fields from form class and view

根据调用表单的位置,我想删除一些未使用的字段。 我从我的控制器 class:

尝试了以下操作
switch ($typ){
        case 3:                   //Analyse
            $form->get('analyseid')->setValue($id); //works
            $form->remove('vertragid');  //doesn't work
            break;
    }

我遇到一些错误:

No element by the name of [vertragid] found in form \wiedervorlage\add.phtml(25): Zend\Form\Fieldset->get('vertragid')

当然,我尝试在我的 view.phtml 脚本中获取属性。

我的问题是:如何从表单和视图中删除字段。

尽管我不太喜欢这种解决方法,但这里的解决方案非常简单。

如果您需要删除在某些条件下给出的某些元素,您可以使用以下行从控制器中删除它们:

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');
}