2015-09-19 61 views
1

是否可以在validation.yml(或其他地方)修改默認錯誤消息(「此值無效」)而不更改驗證規則?Symfony Forms:自定義錯誤消息,但不更改validation.yml中的驗證規則

原因:我有一個<選擇>字段,由數據庫中的id填充(通過Symfony實體)。因此,驗證已經內置。但我想要一個自定義消息。

P.S .:這是一種全局更改消息的方法,但我希望將其分別設置爲每個字段。 http://blog.geertvd.be/2011/09/01/custom-validation-messages-for-standard-validators-in-symfony2/

+0

您是否真的需要一個很好的驗證信息,以幫助那些試圖在選擇字段中輸入無效數據的用戶? – LorenzSchaef

回答

0

您可以在您的實體上使用驗證併爲其中的字段設置驗證消息。類似這樣的:

# src/Acme/BlogBundle/Resources/config/validation.yml 
Acme\BlogBundle\Entity\Author: 
    properties: 
     gender: 
      - Choice: { choices: [male, female], message: "Choose a valid gender." } 

也可以對註釋或任何其他實體配置做同樣的操作。翻譯也可以用與全局錯誤消息相同的方式。詳情請參閱Symfony的書驗證章:http://symfony.com/doc/current/book/validation.html

+0

但是選擇(在你的例子中[男性,女性])在數據庫中。所以我不能在yml文件中列出它們。 –

+0

請記住,這僅僅是一個例子,在你的情況下,你只能有消息選項,你只有在你想限制輸入時使用以下兩個選項才應該給出選擇。還有一件事,你會把這個驗證的東西放在你的實體上,以及這個實體如何顯示,你將在你的FormType類中設置。如果你在實體中使用註釋,那麼你可以有這樣的東西:http://symfony.com/doc/current/book/validation.html#constraint-configuration –

+0

也許你不應該使用@斷言/選擇,可能在你的情況下最好有@ Assert/NotBlank?取決於你在檢查什麼,併爲這種情況設置消息。更重要的是,您可以一次檢查多件事,併爲每個案件設置信息。 –

0

,如果im糾正你也可以僅僅翻譯「這個值無效」消息:

validators.en.yml

author.name.not_blank:請輸入作者姓名。