在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'字段。
答案 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']);
}
}