2012-12-09 13 views
6

私はプロジェクトの初期段階ですが、カスタムコールバックバリデーター(終了日が開始日の後であることを検証します)を含むいくつかの基本機能を作成しました。翻訳を有効にするためにリファクタリングを開始しました。私はこれまでのところ問題はありませんでした...私がカスタムコールバック検証を翻訳するのを見るまで。Symfony2コールバック検証エラーメッセージの翻訳を有効にするにはどうすればよいですか?

翻訳キーの値を私のエラーメッセージに入れて、Symfonyが自動的に翻訳してくれると主張している投稿を読んだが、これは私にとってはそう思わない。誰かが自分のカスタム検証で翻訳を有効にする方法を教えたり、ドキュメントへのリンクを提供したりできますか?

は、ここで翻訳キーと私の現在の検証コードが含まれています:

<?php 
namespace CG5\BFG\CoreBundle\Validators; 

use Symfony\Component\Validator\ExecutionContext; 

class EndDateValidator 
{ 
    static public function isEndDateValid($entity, ExecutionContext $context) 
    { 
     if ($entity->getEndDate() <= $entity->getStartDate()) 
      $context->addViolationAtSubPath('endDate', 'validation.invalid.enddate', array(), null); 
    } 
} 

答えて

7

は、私は同じ問題を抱えて。 symfony2はそれらのメッセージの "バリデータ" Catalogを調べるので、カスタムエラーメッセージをそのカタログにも入れなければなりません。たとえば、app/Resources/translations/validators.en.ymlの下にあります。

キャッシュをクリアする必要があります。

+0

うん、その持っている:Dを、そしてキャッシュを複数回 'クリアした検証: 無効: ENDDATE:終了日がなければなりませんスタートDate' – Chris

+0

翻訳ファイルである「アプリ/リソース/翻訳/ validators.en後.yml "、それは私の答えに間違っていた。そのファイルにあなたの翻訳がありますか?私は自分のエンティティでメソッドを使用しています。それを試しましたか? http://symfony.com/doc/2.0/reference/constraints/Callback.html - >最初のメソッド – vincecore

+0

コールバック(静的関数)のためにそこにリストされている2番目のメソッドを使用しています。この検証をすべてのmy開始日/終了日を持つエンティティ私のmessages.en.ymlをvalidators.en.ymlにコピーした後、動作を開始します。 validators.en.ymlを提案してくれてありがとう。私はdocページに言及されていることを見ていないので、これを知ってくれてありがとう:D – Chris