2016-01-19 191 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