2011-01-09 5 views
3

Я использую конструкцию __('text') в symfony, поэтому я могу затем интернационализировать. Однако я пытался использовать его в сообщении setFlash следующимi18n (интернационализация) в symfony

$this->getUser()->setFlash('error', __('message')); 

в действиях/actions.class.php, но это дает мне ошибку

Fatal error: Call to undefined function __() 

Так я предположить, что я не могу используйте __() на уровне действия, но только уровень шаблона?

ответ

13

В действии вы должны использовать __(), используя контекст:

echo $this->getContext()->getI18N()->__('message'); 

Вы также можете использовать:

sfProjectConfiguration::getActive()->loadHelpers(array('I18N')); 
$this->getUser()->setFlash('error', __('message')); 
1

Он работал большой для меня! Спасибо

Вы также можете сделать $ this-> loadHelpers (array ('I18N')); в классе ProjectConfiguration или фронтэнда | классы backendConfiguration

С уважением

+0

Пробовал это и ломает symfony CLI. – flocki

3

Лучший вариант, если вы хотите это сделать, добавьте этот метод к вашему actions.class.php:

public function preExecute() 
    { 
    sfProjectConfiguration::getActive()->loadHelpers(array('I18N')); 
    parent::preExecute(); 
    } 
Смежные вопросы