如何在表单构建器中添加标签(不是在twig中)?

4
我有这样的代码,但它无法正常工作:
$builder->add('name','text',array(
    'label'  => 'Due Date',
));

我在使用FOSUserBundle时遇到了问题,我需要重写表单。

<?php
namespace Acme\UserBundle\Form\Type;

use Symfony\Component\Form\FormBuilder;
use FOS\UserBundle\Form\Type\RegistrationFormType as BaseType;

class RegistrationFormType extends BaseType
{
    public function buildForm(FormBuilder $builder, array $options)
    {


        // add your custom field
        $builder->add('name','text',array(
    'label'  => 'Due Date',
));
        parent::buildForm($builder, $options);
    }

    public function getName()
    {
        return 'acme_user_registration';
    }
}

但不起作用,没有给我任何错误并设置标签“fos_user_registration_form_name”


你的代码看起来是正确的。你如何验证它不起作用? - Anton Babenko
1个回答

5

你会看到标签为fos_user_registration_form_name,因为FOSUserBundle使用翻译文件来翻译其中的所有文本。

你需要将翻译添加到名为Resources/translations/FOSUserBundle.nb.yml(挪威语示例)的文件中,或者你可以修改与捆绑包一起提供的翻译文件(将其复制到Acme\UserBundle是更好的方法)。


我只是不明白如何设置翻译。 - Mark Cibor
将翻译文件从原始包复制到您的包中,位置相同。例如,从 vendor/bundles/FOS/UserBundle/Resources/translations/FOSUserBundle.de.yml 复制到 src/Acme/UserBundle/Resources/translations/FOSUserBundle.de.yml。然后在那里添加标签翻译。 - Anton Babenko
我已经复制了(FOSUserBundle.it.yml),但它仍然是英文的 :( - Mark Cibor
1
我还在config.yml中设置了: translator: { fallback: it } 以及parameter.ini: - Mark Cibor
谢谢,这回答了我的关于这个问题的疑问。为了澄清给其他人,你基本上需要在翻译文件的底部添加一个条目,在标有“#表单字段标签”的部分中添加正在表单中显示的字段的名称,例如在这种情况下,fos_user_registration_form_name: "Your name:"应该就可以了。 - Al_

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接