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

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

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

Спасибо.

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

5

Решение

Разница между рендерингом страниц в OC < 2.0 и OC 2.0 немного, но вы должны знать о них.

1. $data

В ОК < 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 🙂

20

Другие решения

Разрабатывая ответ 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; ?>
5

По вопросам рекламы [email protected]