2016-01-19 144 views
0

我一直在学习php和symfony的最后2天,通过视频教程工作,因为我需要学习使用php和symfony等作为前端到Java编写的春季应用程序。Twig消息翻译

我在上无效登录的部分,也有一些是我不能让我的头的时候,我不知道它的语法或什么,但它真正地不是清楚正在发生的事情在这里:

{% if error %} 
     <div>{{error.messageKey|trans(error.messageData, 'security') }}</div> 
    {% endif %} 

我明白,当框架放在那里时,错误对象是隐含可用的,但是发生了什么?它看起来像messageKey值被传递到trans函数中,但是该函数在做什么?

如果我只是打印出没有trans函数的error.messageKey,它的管道符号是OR,而不是此实例中的管道?

回答

0

管道符号是一个树枝“过滤器”。它告诉symfony和树枝他左边的文字需要翻译。

了解更多关于在这里http://symfony.com/doc/current/book/translation.html

从评论:

看起来有时是例外的认证可能包含值然后用于转置error.messageKey这是一个占位符阵实际的消息字符串,但在示例中,我遵循的占位符数组实际上是空的,字符串不包含和%var%占位符总之,所以我总是得到标准的“无效的凭据。” <div>{{ 'Invalid %vara% %name%' |trans({'%name%': 'Steve', '%vara%':'login'}, "app") }}</div> - berimbolo

+0

我阅读文档,但它没有解释当调用trans函数并传递trans(error.messageData,'security')时发生了什么。如果error.MessageKey正在被翻译,这是可以理解的,我只是用{{error.messageKey | trans}}来翻译成消息。 error.MessageData传入时发生了什么,以及字符串安全性? – berimbolo

+0

这个线程谈论它,并包含一个接受的答案https://stackoverflow.com/questions/30615754/symfony2-difference-between-error-message-and-error-messagekey – eraffaelli

+0

它包含一个为什么它使用不同的接受答案变量,error.message和error.messageKey,它并不真正回答我的问题。将error.messageData和'security'传递给翻译器函数的目的是什么? – berimbolo