Множество популярных фреймворков используют шаблон проектирования MVC, и OpenCart не стал исключением. Концепция MVC широко используется в современном веб-программировании, и популярность её в первую очередь в том, что этот шаблон проектирования прост для понимания, и решает довольно распространённые проблемы с разработкой архитектуры проекта.
Для тех, кто не знает, MVC представляет из себя архитектуру вида Модель—Представление—Контроллёр. В модели содержатся все основные данные приложения, касательно запросов к базе данных, основной логики, и методов работы. Контролёры в свою очередь являются промежуточным звеном между моделью и представлением, и осуществляют выполнение программы обращаясь к модели и передавая результат в представление. Представление в свою очередь является шаблоном разметки страницы, куда поступают уже готовые данные для вывода на странице.
В OpenCart мы можем обращаться к различным моделям, предварительно подгрузив их в контроллере.
Существует правило обращения к моделям. Все модели публичной части сайта на OpenCart располагаются в папке /catalog/model.
$this->load->model('catalog/information');
Так к примеру, загружая модель, мы подключаем файл information.php из директории /catalog/model/catalog.
Модель представляет из себя класс PHP, который именуется особым образом, и может содержать некий набор методов. Мы можем обращаться к этим методам из контролёра, таким образом:
$prodList = $this->model_catalog_information->getProdList();
Таким образом, в переменную $prodList попадает массив данных, с которым мы может работать в пределах скрипта контролёра.
Передать данные представлению мы можем посредством $this->data, предварительно задав название ключа для объекта.
$this->data['production'] = $this->model_catalog_information->getProdList();
В представлении эти данные будут доступны в переменной $production. Представление как правило уже содержит разметку HTML, где остаётся сделать вывод данных из переменной. Стоит обратить внимание на то, что посредством объекта $this->data передаются все переменные в файл представления. На практике количество переменных в представлении может быть целое множество.