Symfony 1.4,基于模型的形式,我不需要一些小部件


Symfony 1.4, form based on model, I dont need some widgets

在Symfony 1.4中,我使用基于模型的表单。但是有一些小部件/字段我必须需要验证。我找不到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'字段。

您可以简单地从表单

中取消小部件的设置
class XYZForm extends BaseXYZForm
{
    public function configure()
    {
       //....
       unset($this['unwanted_widget']);
    }
}

首先你不需要编辑BaseForm类。

你可以做:

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

或者例如,每个小部件都有选项"required"

字符串部件:

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