0

我正在使用 jqbootstrapvalidation 插件来使用 jquery 在客户端验证我的表单。

我目前正在使用 Symfony2 开发的应用程序提供多种语言,我使用 Symfony 翻译来确保此功能,这是一个简单的示例。

$builder->add ( 'lastName', 'text', array (
                'label' => 'register.last_name' 
        ) )

现在,我想翻译 jqbootstapvalidation 插件中的验证消息,所以我使用了 data-validation 属性,如下例所示:

->add ( 'firstName', 'text', array (
            'label' => 'register.first_name'
            'attr' => array (
                    'minlength' => "5",
                    'data-validation-minlength-message' => 'register.min_length'
            ) 
    ) )

但是我得到的输出是这个'register.min_length'而不是消息文件中的验证消息。

我希望你能理解我的问题并帮助我解决它。

4

2 回答 2

0

您可以直接在控制器中翻译消息。

就像是:

$t = $this->get('translator');
// ...
$builder->add ( 'firstName', 'text', array (
            'label' => 'register.first_name'
            'attr' => array (
                    'minlength' => "5",
                    'data-validation-minlength-message' => $t->trans('register.min_length');
            ) 
    ) );
于 2014-12-29T18:32:49.127 回答
0

您可以将表单注册为服务

然后将翻译服务 @translator注入表单的构造函数。

use Symfony\Component\Translation\TranslatorInterface;

protected $translator;

public function __construct(TranslatorInterface $translator)
{
    $this->translator = $translator;
} 

最后使用表单类型中的翻译器来翻译验证消息。

array(
// ...
'data-validation-minlength-message' => $this->translator->trans('register.min_length'),
),

确保您将表单作为服务调用,或者如果您使用new YourFormType($this->container->get('translator')).

于 2013-08-05T02:08:57.153 回答