Symfony 2 - 表单集合 - 标签翻译

时间:2015-02-09 15:11:46

标签: jquery forms symfony

我试图翻译我的树枝上的标签。 我有一个基本的联系表格,包括名字,姓氏,电话,电子邮件。  我有一个名为" BookContact"我可以在其中添加许多联系人。  用户可以通过单击"添加联系人"生成新的联系表单。按钮(使用原型的jQuery事件,如下所述:http://symfony.com/fr/doc/current/cookbook/form/form_collections.html,我不使用taks和tafgs,但使用BookContact和Contact)。

当我在树枝上展示我的收藏时:

{% for contact in form_book_contact.contacts %}
Contact n° {{ num_contact }}
    <div class="row" id="bookcontacts" data-prototype="{{ form_widget(form_book_contact.contacts.vars.prototype)|e }}">
        <div class="col-md-6">
            <div class="form-group">
               {{ form_widget(contact.firstname) }}
            </div>
        </div>
        <div class="col-md-6">
            <div class="form-group">
               {{ form_widget(contact.lastname) }}
            </div>
          ....
 {% endfor %}

输入看起来像:

 <input type="text" class="form-control" placeholder="0.lastname" name="book_contact[contacts][0][lastname]" id="book_contact_contacts_0_lastname">

我的翻译文件有:

 book_contact:
     firstname:            "Prénom"
     lastname:             "Nom"
.....

在这种情况下,翻译不起作用(这是正常的,因为输入的名称不是&#34;名字&#34;但是&#34; 0.firsname&#34;。 问题是我无法处理联系表格的生成数量。 当用户点击&#34;添加联系人&#34;按钮,输入看起来像:&#34; 1.firstname&#34;等...

我该如何处理这种翻译?如何在翻译文件中管理此数字更改?

谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

由于标签已在the default form layout中翻译,因此您只需在表单类型中进行设置即可。

因此,如果您有表单类型:

class BookContactType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('firstname')
            ->add('lastname')
        ;
    }
}

然后只需在模板中使用form_label(form.firstName)并将其翻译为messages.fr.yml:

Firstname: "Prénom" # Do not forget the first uppercased character
Lastname:  "Nom"

或者如果您更喜欢使用翻译前缀:

class BookContactType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('firstname', null, [
                'label' => 'book_contact.firstname',
            ])
            ->add('lastname', null, [
                'label' => 'book_contact.lastname',
             ])
        ;
    }
}

并使用以下messages.fr.yml:

book_contact:
    firstname:            "Prénom"
    lastname:             "Nom"