Различий между рендерингом страниц в OC ‹ 2.0 и OC 2.0 немного, но вы должны их знать.
1. $data
В OC ‹ 2.0 вы бы сделали это:
$this->data['text_button_save'] = $this->language->get('text_button_save');
а в OC 2.0 только $data
, т.е.
$data['text_button_save'] = $this->language->get('text_button_save');
который передается методу $this->load->view()
в качестве аргумента, например:
$this->response->setOutput($this->load->view('catalog/category_list.tpl', $data));
2. $this->render()
ушел. Теперь вместо этого вы звоните $this->load->view('catalog/category_list.tpl', $data)
.
3. $this->children
ушел. Теперь позиции дочерних модулей шаблона создаются как часть свойств шаблона, в то время как вам нужно вызывать их контроллеры вручную (ПОЧЕМУ?):
$data['header'] = $this->load->controller('common/header');
$data['column_left'] = $this->load->controller('common/column_left');
$data['footer'] = $this->load->controller('common/footer');
Я думал, на кой черт понадобились эти изменения. Что было улучшено? Они хотели, чтобы разработчики писали меньше кода? Теперь это больше следует принципам ООП, MVC, WTF (извините)? И получил ответ: НЕТ (или ничего на первое).
Нам все еще нужно загрузить переводы (я имею в виду, нам все еще нужно загрузить перевод каждой отдельной строки). И gettext
существует уже более 8 лет...
Вместо короткого $this->response->setOutput($this->render());
теперь приходится вызывать гораздо более длинное (и непонятное) $this->response->setOutput($this->load->view('catalog/category_form.tpl', $data));
. Почему мы не можем просто сделать это: $this->render('catalog/category_form.tpl', $data);
???
Лично я считаю, что OC 2.0 — это те же экскременты (с точки зрения разработчиков), что и раньше. Они просто изменили упаковку. Но, честно говоря, экскременты есть и побольше, вот почему я застрял на OpenCart :-)
person
shadyyx
schedule
24.10.2014
$this->render()
. Проблема в том, что вы следовали учебнику/ответу, применимому для OC ‹ 2.0. Загляните в другие контроллеры в OC 2.0, чтобы узнать, как делается рендеринг страницы (в принципе его нет, вы только устанавливаете переменные для рендеринга — шаблон, содержимое позиций модуля, готово). - person shadyyx   schedule 24.10.2014