Php symfony1.4,基于模型的表单,我不需要一些小部件

Php symfony1.4,基于模型的表单,我不需要一些小部件,php,symfony-1.4,Php,Symfony 1.4,在Symfony 1.4 Im中,使用基于模型的表单。但我必须验证一些小部件/字段。我找不到removeWidget()或类似的东西,如何删除一些不需要检查/验证的字段 编辑:基本形式 $this->setWidgets(array( 'f1' => new sfWidgetFormInputHidden(), 'f2' => new sfWidgetFormInputText(), 'f3' => sfWidgetFormInput

在Symfony 1.4 Im中,使用基于模型的表单。但我必须验证一些小部件/字段。我找不到
removeWidget()
或类似的东西,如何删除一些不需要检查/验证的字段

编辑:基本形式

$this->setWidgets(array(
  'f1'          => new sfWidgetFormInputHidden(),
  'f2'  => new sfWidgetFormInputText(),
  'f3'    => sfWidgetFormInputText()
));

$this->setValidators(array(
  'f1'          => new sfValidatorChoice(array('choices' => array($this->getObject()->get('ID')), 'empty_value' => $this->getObject()->get('ID'), 'required' => false)),
  'f2'  => new sfValidatorInteger(),
  'f3'    => new sfValidatorInteger()
));
$this->widgetSchema->setNameFormat('task[%s]');
$this->errorSchema = new sfValidatorErrorSchema($this->validatorSchema);
$this->setupInheritance();
parent::setup();

现在我必须编辑
configure()
方法,这样验证器就不会检查'f1'字段。

首先,您不需要编辑BaseForm类

您可以:

 $this->validatorSchema['widget_name'] = new sfValidatorPass();
或者,例如,每个小部件都有选项“必需”

字符串小部件:

$this->validatorSchema['widget_name'] = new sfValidatorString(array('required' => false));

您可以简单地将小部件从表单中取消设置

class XYZForm extends BaseXYZForm
{
    public function configure()
    {
       //....
       unset($this['unwanted_widget']);
    }
}

我们肯定需要查看表单类和呈现表单的模板。不是全部。。只是相关的部分。向我们展示整个代码:动作、自定义表单等。。。不是基本的。好吧,在模板中,表单是定制呈现的:在我创建的动作中:$this->form=newtaskform();和bind:$this->form->bind($request->getParameter('task');那么您的
任务表单中有什么内容?