2014-09-23 67 views
0

我试图将我的应用程序中的某些形式转换为symfony形式。我有一个生日值,我希望有空值,空值应分别为'month''day''year',并根据当地情况显示这些单词的翻译版本。现在我正在用树枝试试这个。如何在树枝中添加symfony形式的trans值

{{ form_row(form.birthday, {'empty_value':{ 'year':'title.year'|trans, 'month':'title.month'|trans, 'day':'title.day'|trans }}) }} 

但这并没有工作,因为我仍然看到'jan''1''1894'作为该字段的默认值。

我这是怎么的形式定义它:

->add(
    'birthday', 
    'birthday', 
    [ 
     'label' => false, 
     'required' => true, 
     'attr' => [ 
     'class' => 'date-fields' 
     ] 
    ] 
) 

有没有办法在树枝做到这一点还是我一定要翻译传递给我的形式和产生在那里的文本?

+0

肮脏的方式是注入翻译服务到你的'类型'和翻译'empty_value'那里没有在枝杈 – 2014-09-23 07:03:42

回答

0

你能尝试一下代码:

->add(
    'birthday', 
    'birthday', 
    [ 
     'label' => false, 
     'required' => true, 
     'attr' => [ 
      'class' => 'date-fields' 
     ], 
     'empty_value' => 'your_translation_path' // for example title.year 
    ] 
) 

而在你的窗体的方法setDefaultOptions您可以添加默认翻译领域,这样的:

/** 
* {@inheritdoc} 
*/ 
public function setDefaultOptions(OptionsResolverInterface $resolver) 
{ 
    $resolver->setDefaults([ 
     'translation_domain' => 'AcmeDemoBundle', 
    ]); 
} 

希望它能帮助。

+0

是的,这基本上是这样做的方式。我的项目中的翻译与标准的symfony方式稍有不同,所以我不得不做一些其他的改变,但是这导致我走上了正确的道路。 – 2014-10-03 06:56:33

0

有一个非常简单的方法来做到这一点。 只是要命名为messages.en.xliff 翻译文件在此目录中

YourProject 
     |___app 
       |___Resources 
         |___translations 
             |___messages.en.xliff 

messages.en.xliff刚加入这一行

 <trans-unit id="Title"> 
      <source>Title</source> 
      <target>标题</target> 
     </trans-unit> 

入住这one.Don't忘记清除缓存 无需添加在形式上转换。

+0

这是很好的解释。 – 2014-10-03 20:52:44