Добавить комментарий

Самый быстрый способ присвоения языковых переменных в контроллере OpenCart

Наверное самым нудным в создании любого модуля является присвоение языковых переменных в контроллерах.

 

Сначала все эти переменные нужно внести во все языковые файлы, после чего каждую(!) переменную нужно прописать в контроллере, а в модулях их десятки (а например в контроллере товара в админке больше сотни!), после чего каждую переменную прописать в шаблоне..

 

Я уже начал писать свой хелпер для этого, как нашел одно очень простое решение:

Вместо:

 

$this->language->load('path/file');
$this->data['foo1'] = $this->language->get('bar1');
$this->data['foo2'] = $this->language->get('bar2');
// еще 100500 строк с $this->language->get()

 

учитывая то, что лоадер языка возвращает массив всех языковых переменных, можно сделать:

 

// для 1.5.x
$this->data = $this->language->load('path/file');
// для 2.0
$data = $this->language->load('path/file');

 

Это присвоит все языковые переменный в $this->data автоматически.

 

Нужно помнить, что $this->language->load('path/file') возвращает не только массив из файла 'path/file' но и все языковые файлы загруженные до него, например главный языковый файл в корне. Но конфликтов быть не должно, так как если вдруг и попадется какая-то ненужная языковая переменная с одинаковым названием с переменной контроллера то учитыая то, что языковые файлы грузятся с самого начала, эта перменная потом просто переопределиться в контроллере. 

 

Проверено на admin/controller/catalog/product.php и catalog/controller/product/product.php как 2-х самых больших контроллерах с большим к-вом языковых перменных. 

 

Почему это не используется в движке? Неужели кому-то проще писать десятки ненужных строк кода в каждом контроллере?..

CAPTCHA
Защита от спама
Target Image