簡體   English   中英

Symfony表單錯誤消息參數用法

[英]Symfony form error message parameters usage

Symfony表單錯誤中消息參數數組的用途是什么?

例如,我有以下情況:在表單上我有一個訂閱者,其中,根據用戶提供的信息,可以調用API,並且可以向Symfony表單添加一些其他錯誤。

因此,當發生錯誤時,我在字段上添加一個新錯誤:

$myForm->get('name')->addError(
    new FormError('name.api_invalid', null, array('{{ api_name }}' => $someValue))
);

其中'name.api_invalid'在message.en.yml中定義為

name.api_invalid: "The API says the name is actually {{ api_name }}. Please fix before proceeding."

在翻譯消息時,不替換“參數”。

這不是形式錯誤參數應該如何工作?

注意:我可以使用它來使其工作

$myForm->get('name')->addError(
    new FormError(
        $this->translator->trans('name.api_invalid', array('{{ api_name }}' => $someValue))
    )
);

但我真的很好奇這些錯誤參數。

謝謝!

您正在查看的行為在Symfony 2.2中已更改

現在,翻譯驗證錯誤是可選的。 如果您願意,您仍然可以手動執行此操作,或者您可以簡化模板以簡單地輸出已翻譯的消息。

如果你看一下form_errors 2.1阻塞主場迎戰form_errors在2.2塊 ,你會看到如何顯示錯誤的差異。 您可以覆蓋塊並以舊方式執行,然后將該模板導入到您需要的任何位置,或者您可以按照上面的方式簡單地翻譯錯誤消息(這是我通常所做的,並且完全可以接受)。

如果您要使用$translator->trans的路線,那么我會在參數中使用%..% ,如Symfony文檔中所述

占位符可以采用任何形式,因為使用PHP strtr函數重建完整的消息。 但建議使用%...%表單,以避免使用Twig時出現問題。

您使用的{{ }}更傾向於使用Symfony Validators以及它們如何構建違規( 例如此處 )。

現在,如果您希望自動翻譯您的消息和參數而不手動拋出FormError ,那么我只是建議為您嘗試做的任何事情創建一個自定義驗證器,並在那里構建消息。 否則,只需按照您已經弄清楚的方式手動翻譯它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM