2012-12-09 59 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中看起來在這些消息的「驗證」目錄,你必須把你的自定義錯誤消息也是在該目錄。例如在app/Resources/translations/validators.en.yml下。

你需要清除緩存爲它工作。

+0

是啊,有:d,並已清除緩存多次 '驗證: 無效: 結束日期:結束日期必須在之後開始Date' – Chris

+0

的翻譯文件是「應用程序/資源/翻譯/ validators.en .yml「,我的回答是錯誤的。你在那個文件中有翻譯嗎?我在我的實體上使用了一種方法。你嘗試過嗎? http://symfony.com/doc/2.0/reference/constraints/Callback.html - > – vincecore

+0

我使用我的回調(靜態函數)所列的第二個方法,因爲我想這個驗證第一種方法適用於所有我的具有開始/結束日期的實體。將我的messages.en.yml複製到validators.en.yml後,它開始工作。非常感謝您提供validators.en.yml。我沒有看到在文檔頁面上提到的,所以感謝您知道這一點:D – Chris