0

私は Symfony 1.4 を使用して、ユーザーがさまざまな種類の CSV ファイルをインポートできるようにしています。また、アップロードされたファイルの実際のコンテンツの検証とサニタイズをカスタム バリデーターに統合することにしました。カスタム バリデーターは sfValidatorFile を拡張します。

また、ファイルにエラーが含まれている場合、フィールド/ローカル エラーとして表示するのではなく、グローバル エラーをフォームにスローしたいと考えています。また、特定のインポート ファイルに対して同時に多くの検証エラーを表示する機能があります。

ポスト バリデーターを使用してこれを機能させることができると確信していますが、これはポスト バリデーターにはあまり適していないようです (カスタム バリデーションを実行するために必要なフォーム フィールドは 1 つだけであるため)。しかし、もっと重要なことは、追加の検証作業をすべて 1 つのカスタム ファイル バリデーターにパッケージ化する、もう少しエレガントなものが欲しいということです。

たとえば、次の代わりに:

$this->validatorSchema['file'] = new sfValidatorFile( … );
$this->validatorSchema->setPostValidator(new myFancyValidator( … ));

次のようなことをしたいだけです:

$this->validatorSchema['file'] = new myFancyValidator( … );

...そして、myFancyValidator 内で発生した検証エラーを、フォームのグローバル エラーのコレクションに追加します。

カスタムバリデーター内からフォームの globalErrors にエラーをプッシュするためにいくつかの異なるアプローチを試みましたが、検証パズルのさまざまな部分がどのように適合/スコープするかについて何かが欠けています。これを達成する方法について何か考えはありますか?依存性注入?

4

1 に答える 1

0

カスタムバリデーターで sfValidatorError オブジェクトをスローします。例:

if(!$isValid){
    // throw global error
    throw new sfValidatorError($this, "invalid");
}
else {
    return true;
}
于 2012-05-15T13:34:47.623 に答える