Самый быстрый способ присвоения языковых переменных в контроллере 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-х самых больших контроллерах с большим к-вом языковых перменных.
Почему это не используется в движке? Неужели кому-то проще писать десятки ненужных строк кода в каждом контроллере?..
Добавить комментарий