首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法为具有JMS转换包的表单标签提取转换id

无法为具有JMS转换包的表单标签提取转换id
EN

Stack Overflow用户
提问于 2013-05-13 15:34:23
回答 1查看 2K关注 0票数 0

我正在使用JMS翻译包来提取我的翻译。一切正常,但当我试图从表单构建器中提取翻译消息时,我收到了以下消息:

代码语言:javascript
复制
[JMS\TranslationBundle\Exception\RuntimeException]
  Unable to extract translation id for form label from non-string values, but got "PHPParser_Node_Expr_MethodCall" in /srv/local.project.com/app/../src/Project/MyBundleBundle/Form/Type/EmailType
  .php on line 30. Please refactor your code to pass a string, or add "/** @Ignore */".

我使用的代码如下:

代码语言:javascript
复制
public function __construct($translator)
    {
        //translation service passed from controller
        $this->trans = $translator;
    }

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('email', 'repeated', array(
                'type' => 'email',
                'first_name' => 'email',
                'second_name' => 'email-repeat',
                 //TRANSLATION GIVES ERROR ON NEXT LINE          
                'invalid_message' => $this->trans->trans('online.form.email.errors.equal', array(), 'messages_roadrunner'), 
                'error_bubbling' => true,
                'first_options'  => array('label' => $this->trans->trans("online.form.email.fields.one", array(), 'messages_roadrunner')),
                'second_options' => array('label' => $this->trans->trans("online.form.email.fields.second", array(), 'messages_roadrunner')),
            )
        );

        $builder->add('optin', 'checkbox', array(
            'required'  => false,
            'label' => $this->trans->trans('online.form.email.fields.optin', array(), 'messages_roadrunner')
        ));

    }

奇怪的是,在我的控制器中,我使用的是相同的东西,但在那里一切都正常工作:

代码语言:javascript
复制
$content['text'] = $this->get('translator')->trans('online.tariff.text.no_advice', array(), 'messages_roadrunner');

有没有人有这个问题的经验?

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-16 13:53:05

不要忘记,默认情况下,提取器被配置为自动从FormBuilder::add()调用参数中提取值(参见doc)。在本例中,它期望'label'是一个字符串,但它包含一个方法调用,这就是你的错误。

这实际上意味着您不必将转换器也传递到FormType中。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16516921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档