Добавление страницы администратора в OpenCart версии 2

У меня проблема с добавлением страницы администратора в Opencart2, и после ответов на почти одинаковые вопросы на SO не помогайте, поэтому я верю, что проблема связана с OC2.

После ответа на этот вопрос я до сих пор получаю сообщение об ошибке « Неустранимая ошибка: вызов неопределенного метода ControllerCustomHelloWorld :: render () в C: \ websites \ weddingshoponline \ shop \ admin \ controller \ custom \ helloworld.php в строке 13. Любой помощь была бы высоко оценена, поскольку я собираюсь по кругу.

Спасибо.

PS Возврат к предыдущей версии OC недействителен, хотя и хороший.

Разница между рендерингом страниц в 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 🙂

Разрабатывая вопрос о том, как Shadyyx на вопрос, при этом код, который я начал работать, я не говорю, что он совершенен, просто он работает.

админ \ контроллер \ пользовательские \ helloworld.php

 <?php class ControllerCustomHelloWorld extends Controller { private $error = array(); public function index() { $this->load->model('setting/setting'); $this->load->language('custom/helloworld'); $data['breadcrumbs'] = array(); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/dashboard', 'token=' . $this->session->data['token'], 'SSL') ); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_module'), 'href' => $this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL') ); $data['heading_title'] = $this->language->get('heading_title'); $data['header'] = $this->load->controller('common/header'); $data['column_left'] = $this->load->controller('common/column_left'); $data['footer'] = $this->load->controller('common/footer'); $this->response->setOutput($this->load->view('custom/helloworld.tpl', $data)); } } ?> 

админ \ язык \ английский \ пользовательские \ helloworld.php

 <?php // Heading $_['heading_title'] = 'My First Admin Page...'; // Text $_['text_module'] = 'Modules'; $_['text_success'] = 'Success: You have modified module account!'; $_['text_content_top'] = 'Content Top'; $_['text_content_bottom'] = 'Content Bottom'; $_['text_column_left'] = 'Column Left'; $_['text_column_right'] = 'Column Right'; // Entry $_['entry_layout'] = 'Layout:'; $_['entry_position'] = 'Position:'; $_['entry_status'] = 'Status:'; $_['entry_sort_order'] = 'Sort Order:'; // Error $_['error_permission'] = 'Warning: You do not have permission to modify module account!'; ?> 

админ \ модель \ пользовательские \ helloworld.php

 <?php class ModelCustomHelloWorld extends Model { public function HelloWorld() { $sql = "SELECT * FROM " . DB_PREFIX . "category_description"; $implode = array(); $query = $this->db->query($sql); return $query->rows; } } ?> 

админ \ вид \ шаблон \ пользовательские \ helloworld.php

 <?php echo $header; ?><?php echo $column_left; ?> <div id='content'> <h1><?php echo $heading_title; ?></h1> <?phpecho 'I can also create a custom admin page.!'<br/>; ?> <?php print_r($my_results);?> <?php foreach ($breadcrumbs as $breadcrumb) { ?> <li><a href="<?php echo $breadcrumb['href']; ?>"><?php echo $breadcrumb['text']; ?></a></li> <?php } ?> </div> <?php echo $footer; ?>