在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));