Использовать переменные внешние виды phalcon

Я использую Phalcon и его возможности упростить перевод с помощью Class Translate. Пока что я передаю переменную t из индекса во все представления, прямо при настройке volt, вот так:

 $view = new View();
 $view->setViewsDir(WEBSITE_PATH.'/views/');
// Return a translation object
      $view->t = new Phalcon\Translate\Adapter\NativeArray([
        "content" => $localization
      ]);

Это работает, но у меня также есть страницы для перевода снаружи из представлений папок, в .php, а не в .volt. Как я могу поделиться/установить/передать эту переменную 't' в другие места?


person Duveral    schedule 26.04.2016    source источник


Ответы (1)


Вы можете зарегистрировать переводы в своем инжекторе зависимостей, например

$di->setShared('translations', function() use($di) {

    // Include or set your translations here, must be an array
    $translations = ['Phalcon' => 'Falcon', 'Word' => 'Translation'];

    return new \Phalcon\Translate\Adapter\NativeArray(array(
        'content' => $translations
    ));

});

Затем вы можете вызывать переводы в любом контроллере, например

$this->translations->_('Phalcon')

и в представлениях вроде

<?=$this->translations->_('Word') ?>

Дополнительная литература: https://docs.phalconphp.com/en/latest/reference/translate.html

person PWD    schedule 26.04.2016
comment
Спасибо! Еще один вопрос... В чем разница между -›setShared и -›set ? - person Duveral; 26.04.2016
comment
При использовании -›setShared всегда возвращается один и тот же экземпляр службы, тогда как -›set будет возвращать новый экземпляр при каждом вызове. docs.phalconphp.com/en/latest/reference/di.html - person PWD; 26.04.2016