Ранее в Opencart вы могли получить доступ к методам класса контроллера из шаблона (.tpl), просто вызвав $this
:
$store_name = $this->config->get('config_language');
В Opencart 2+ это больше невозможно, и стало необходимо вызывать их через registry
как обсуждалось Вот
$store_name = $this->registry->get('config')->get('config_language');
Теперь в Opencart 2.3 это тоже не работает. Поэтому я попытался просто пройти $this
к $data
массив и это только частично работает:
(в контроллере)
public $name = 'test';
...
$data['this'] = $this;
(в шаблоне)
// The following works fine and outputs the class property $name
$this->name;
// This does not work and returns errors
// Notice: Undefined property: Template\PHP::$registry
// PHP Fatal error: Call to a member function get() on a non-object
$this->registry->get('config')->get('config_language');
ВОПРОС: Почему непосредственные свойства класса контроллера доступны, но метод родительского класса registry
не является?
Задача ещё не решена.
Других решений пока нет …