在 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');
我在想,到底为什么需要这些改变。改进了什么?他们是否希望开发人员编写更少的代码?现在是不是更遵循 OOP、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 的原因 :-)