0

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

编辑:baseForm

$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”字段。

4

2 回答 2

1

首先你不需要编辑 BaseForm 类。

你(们)能做到:

 $this->validatorSchema['widget_name'] = new sfValidatorPass();

或者例如,每个小部件都有“必需”选项

字符串小部件:

$this->validatorSchema['widget_name'] = new sfValidatorString(array('required' => false));
于 2012-12-26T20:06:16.867 回答
1

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

class XYZForm extends BaseXYZForm
{
    public function configure()
    {
       //....
       unset($this['unwanted_widget']);
    }
}
于 2012-12-27T15:13:39.553 回答