В платформе MVC-L OpenCart контроллер Вашего модуля является связующим звеном, соединяющим файлы Вашего языка, модели и шаблона друг с другом. Контроллер отвечает за захват текста, содержащегося в языковом файле, и обеспечение его доступности в качестве переменных PHP в файле шаблона представления. Помимо наследования функций, доступных в родительском классе контроллера, Controller, вы также можете загрузить любой из файлов модели OpenCart по умолчанию и их функции в контроллер. В этой документации мы покажем код PHP, необходимый для загрузки файлов языка и модели и их функций.
Контроллер выводит текст, сохраненный в языковом файле, и превращает их в переменные, которые можно отобразить в файле шаблона, в отображаемый текст. Это особенно полезно для управления переводами Вашего модуля. Вместо того, чтобы изменять Ваш файл .tpl (.twig) каждый раз, когда у Вас есть новый перевод для изменения каждого фрагмента текста внутри, Вам просто нужно изменить текст в Вашем языковом файле, и переменные в контроллере и шаблоне останутся такими же.
Кусок кода ниже загрузит языковой файл внутри контроллера Вашего модуля. В скобках необходимо указать путь к языковому файлу из языковой папки.
$this->load->language('module/my_module');
Важно помнить, что контроллер администратора будет загружать только языковой файл администратора, но не языковой файл каталога; и аналогично контроллер каталога будет загружать только языковой файл каталога. Как только языковой файл загружен в контроллер, вы можете сохранить его текст в переменной php с помощью массива $data. $this->language->get('text') возьмет текст из $_['text'] переменной внутри языкового файла.
$this->data['text'] = $this->language->get('text');
$this->language->get('text') возьмет текст из $_['text'] переменная внутри языкового файла, который мы только что загрузили. Каждый элемент массива данных будет преобразован в свою переменную. $data['text'] станет $text для файла шаблона изнутри. Переменная $text может быть отражена в файле view's .tpl где нужно:
<p><?php echo $text; ?></p>
Следующий код установит текст из языкового файла в качестве заголовка страницы:
$this->document->setTitle($this->language->get('heading_title'));
Это получит текст для переменной $_['heading_title'] хранится в модуле языкового файла.
Загрузка файлов модели в файл Вашего контроллера позволит Вашему модулю использовать встроенные функции OpenCart. Функции внутри файлов модели взаимодействуют с базой данных магазина и добавляют/извлекают важную информацию для Вашего модуля. Мы рекомендуем Вам воспользоваться этими функциями, а не делать собственные запросы к БД. Потратьте некоторое время на изучение папок модели в файлах администратора и каталога, чтобы увидеть, какие файлы могут принести пользу Вашему модулю. Например, если Вашему модулю нужно извлечь информацию о продукте из базы данных магазина, будет полезно загрузить файл admin/model/catalog/products.php, так как он уже имеет множество полезных встроенных функций, которые взаимодействуют с товары магазина в базе.
Ваш модуль может загрузить любой файл модели в свой файл контроллера, используя следующий код, при условии, что они находятся в той же папке администратора или каталога, что и контроллер.
$this->load->model('setting/setting');
Вам нужно будет указать путь к файлу, который Вы хотите загрузить из папки администратора в скобках. Приведенный выше код загрузит класс настроек, поэтому у нас есть доступ к функциям внутри класса ModelSettingSetting в файле контроллера нашей модели. Используйте следующий формат в Вашем коде для вызова функции из загруженного файла модели:
$this->model_setting_setting->editSetting('my_module', $this->request->post);
Подчеркивания относятся к обозначениям файлов для модели/setting/setting.php. Если у Вас есть файл модели для Вашего модуля, Ваш код будет соответствовать указанному выше формату, так как файл модели загружается в папку модели.
$this->load->model(module/my_module.php);
$this->model_module_my_module->myFunction();
Приведенный выше код загрузит файл my_module.php, хранящийся в admin/model/module/my_module.php.
В контроллере Вам нужно будет загрузить файл шаблона Вашего модуля в поле зрения. Для этого установите $this->template как так:
$this->template = 'module/my_module.tpl';
Каталог OpenCart содержит коллекцию файлов библиотеки, к которым могут обращаться файлы как администратора, так и контроллера каталога. Эти файлы находятся в папке system/library в корневой папке магазина OpenCart. В примерах кода видно загрузку языкового файла, оба $this->load->language и $this->document предоставить доступ к функциям в файлах language.php и document.php в папке библиотеки. Если Вы хотите получить доступ к функции из файла библиотеки, Вам нужно вызвать ее с помощью $this->[insert library file name]->function() в классе контроллера.
Для получения дополнительной информации о концепции поведения контроллера в рамках MVC или в контексте разработки модуля для OpenCart см. Вступление и Разработка модулей. Чтобы увидеть, как загруженные файлы могут быть использованы в базовом модуле, см. DIY-модуль из HostJars