2

symfony フレームワークのある種の「バグ」であると思われる問題にぶち当たりました: さまざまなタイプのバリデーター (例: sfValidatorInteger) に対してデフォルトのエラーメッセージを設定したいです。このために、私のProjectConfiguration::setupメソッド内に次のものがあります。

sfValidatorBase::setDefaultMessage('required', 'Erforderlich.');
sfValidatorBase::setDefaultMessage('invalid', 'Format ungültig.');
sfValidatorInteger::setDefaultMessage('invalid', '"%value%" ist keine Ganzzahl.');

これsfValidatorBaseは、たとえばsfValidatorInteger. sfValidatorInteger既定の既定のメッセージが引き続き表示されます'"%value% is not an integer.'

それで、私はの実装を見てsfValidatorInteger::configure、それがハードコードされたインスタンスのエラーメッセージを設定することを理解しました:

protected function configure($options = array(), $messages = array())
{
  $this->addMessage('max', '"%value%" must be at most %max%.');
  $this->addMessage('min', '"%value%" must be at least %min%.');

  $this->addOption('min');
  $this->addOption('max');

  $this->setMessage('invalid', '"%value%" is not an integer.');
}

エラー メッセージはデフォルトのメッセージ マップから読み取られると思っていましたが、明らかにそうではありません。

では、できれば元の symfony コードに触れずに、この問題をクリーンな方法で解決するにはどうすればよいでしょうか (将来の更新で変更が上書きされる可能性があるため)。configure適切な実装を提供するために、すべてのバリデータ クラスを派生させる必要がありますか? まあ、そうは思いません。各バリデーターインスタンスのエラーメッセージを個別に設定することも、(クリーン) オプションではありません。

バリデーターの設定に関して何か間違っているのかもしれません。次に、より一般的な質問は次のようになり'invalid' => '"%value%" ist keine Ganzzahl.'ますsfValidatorInteger

前もってありがとう、
フリンシュ。

4

2 に答える 2

1

デフォルトのSymfonyのものを拡張する独自のバリデーターを作成し、それらを使用します。

于 2011-02-02T16:54:03.760 に答える
1

xliff 翻訳ファイルを使用してこれを行うことができると思います。

<source>"%value%" is not an integer.</source>
<target>"%value%" n'est pas un entier.</target>
于 2011-01-31T22:09:25.630 に答える