【问题标题】:translate validation messages using jqbootstrapvalidation with Symfony2使用 jqbootstrapvalidation 和 Symfony2 翻译验证消息
【发布时间】:2013-08-04 01:08:25
【问题描述】:

我正在使用 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' 而不是消息文件中的验证消息。

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

【问题讨论】:

  • jquery-validate 不是jqbootstrapvalidation。请在标记您的问题时更加注意。已编辑。谢谢。

标签: jquery validation symfony jquery-plugins


【解决方案1】:

你可以注册你的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')) 构造对象,请确保将表单作为服务调用或将翻译器传递给表单。

【讨论】:

  • 谢谢你拯救了我的一天。真的行!但是,您有一些语法错误。而不是:$this->container->get('translator') 我使用了 $this->get('translator') 而不是:$this->translator->translate 我使用了 $this->translator->trans就像这里显示的link
  • $this->get() 只是$this->container->get() 的别名。我将translator->translate 修复为trans 抱歉这个错误。
【解决方案2】:

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

类似:

$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');
            ) 
    ) );

【讨论】:

    猜你喜欢
    • 2015-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多