使用带有Symfony2的jqbootstrapvalidation来转换验证消息

时间:2013-08-04 01:08:26

标签: jquery validation symfony jquery-plugins

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

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

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

现在,我想翻译jqbootstapvalidation插件中的验证消息,因此我使用了数据验证属性,如下例所示:

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

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

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

2 个答案:

答案 0 :(得分:0)

您可以注册form as a service

然后将翻译服务@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'))构建对象,请确保将表单作为服务调用或将翻译器传递给表单。

答案 1 :(得分: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');
            ) 
    ) );