Категории

Загрузка файлов в контроллер

В платформе 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