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

时间:2012-12-26 13:38:32

标签: php symfony-1.4

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

2 个答案:

答案 0 :(得分:1)

首先,您不需要编辑BaseForm类。

你可以:

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

或者例如,每个小部件都有“required”

选项

字符串小部件:

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

答案 1 :(得分:1)

您只需从表单中取消设置小部件

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