0

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」フィールドをチェックしないようにメソッドを編集する必要があります。

4

2 に答える 2

1

フォームからウィジェットの設定を解除するだけです

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

まず、BaseForm クラスを編集する必要はありません。

あなたは作ることができます:

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

または、たとえば、各ウィジェットにはオプション「必須​​」があります

文字列ウィジェット:

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