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
。
前もってありがとう、
フリンシュ。