2015-05-28 66 views
0

翻譯我有一個FormErrors幫手:Symfony的形狀誤差由助手

class FormErrors implements \JsonSerializable 
{ 

    public function __construct(FormInterface $form) 
    { 
     $this->form = $form; 
    } 

    public function all() 
    { 
     return $this->getErrors($this->form); 
    } 

    private function getErrors(FormInterface $form) 
    { 
     $result = array(); 
     $result[$form->getName()] = array(); 
     foreach ($form->getErrors() as $error) { 
      $result[$form->getName()][] = $error->getMessage(); 
     } 


     foreach ($form->all() as $child) 
     { 
      $errors = $this->getErrors($child); 

      if (count($errors[$child->getName()])) 
       $result[$form->getName()][$child->getName()] = $errors[$child->getName()]; 
     } 
     return $result; 
    } 

    public function jsonSerialize() 
    { 
     return $this->all(); 
    } 

} 

它這樣使用: return (new \Bundle\Util\FormErrors($form))->all();

但是這個代碼不返回翻譯的消息。 該文檔明確指出$ error-> getMessage()應該返回一個已翻譯的消息。

我到處都是通過區域設置進行調試,它沒有設置爲英文,但我仍然收到英文消息。

我寧願不將容器注入幫助器,因爲我不需要更改幫助器的構造函數,並且因爲我在我的應用程序的許多地方使用此函數,所以可能會破壞代碼。

+0

你有翻譯文件爲您的語言環境? –

+0

@MichaelSivolobov是的 –

回答

0

加入你的錯誤,在「validators.en.yml」或指定翻譯域的形式可能會有所幫助:

$resolver->setDefaults(array(
    'translation_domain' => 'errors' 
));