Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Создание модуля


Recommended Posts

Здравствуйте, я новичок в opencart , пока только осваиваю создание модулей , не могу подключить свой модуль, модуль создавал по этой статье:
http://s-engineer.ru/sozdaem-modul-v-opencart-2-x-ocmod/
версия osctore 2.3.0.2.3
Создал 6 файлов(admin catalog(view model controller)), создал все каталоги для этих файлов поместил файлы в каталоги, все это засунул в папку upload, далее заархивировал, через панель админа- установка дополнений загрузил свой архив(без ошибок)
Установщик показал следующие пути:

admin/controller/extension/module/mymodul.php
admin/language/ru-ru/extension/module/mymodul.php
admin/view/template/extension/module/mymodul.tpl
catalog/controller/extension/module/mymodul.php
catalog/language/ru-ru/extension/module/mymodul.php
catalog/view/theme/default/template/extension/module/mymodul.tpl

Нажал "продолжить"
Дополнение успешно установлено!
Дал права на редактирования модуля в панели админа.
Во вкладке Дополнений-Модули , мой модуль отобразился, но кнопка редактировать неактивна, активна кнопка "Установить", при ее нажатии выходит ошибка 

Fatal error: Class 'Controllerextensionmodulemymodul' not found in D:\OpenServer\domains\lightning.loc\system\storage\modification\system\engine\action.php on line 43

Помогите пожалуйста включить модуль, подскажите что я делаю не так
ВОт код файла  mymodul.php (admin-controller)


<?php
class ControllerModulemymodul extends Controller {
    private $error = array();
 
    public function index() {
        $this->load->language('extension/module/mymodul'); //подключаем наш языковой файл
 
        $this->load->model('setting/setting');   //подключаем модель setting, он позволяет сохранять настройки модуля в БД
 
        if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) { //если мы нажали "Сохранить"  в панели, мы сохраняем текущие настройки
            $this->model_setting_setting->editSetting('mymodul', $this->request->post);
            $this->response->redirect($this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL'));
        }
 
         // ваши переменные
        $data['heading_title'] = $this->language->get('heading_title');
        $data['text_edit'] = $this->language->get('text_edit');
        $data['text_enabled'] = $this->language->get('text_enabled');
        $data['text_disabled'] = $this->language->get('text_disabled');     
 
        $data['entry_status'] = $this->language->get('entry_status');
 
        // если метод validate вернул warning, передадим его представлению
        if (isset($this->error['warning'])) {
            $data['error_warning'] = $this->error['warning'];
        } else {
            $data['error_warning'] = '';
        }
 
        // далее идет формирование массива breadcrumbs (хлебные крошки)
        $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['breadcrumbs'][] = array(
            'text' => $this->language->get('heading_title'),
            'href' => $this->url->link('module/category', 'token=' . $this->session->data['token'], 'SSL')
        );
 
        //ссылки для формы и кнопки "cancel"
        $data['action'] = $this->url->link('module/mymodul', 'token=' . $this->session->data['token'], 'SSL');
        $data['cancel'] = $this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL');
 
        //переменная с статусом модуля
        if (isset($this->request->post['mymodul_status'])) {
            $data['mymodul_status'] = $this->request->post['mymodul_status'];
        } else {
            $data['mymodul_status'] = $this->config->get('mymodul_status');
        }
 
        //ссылки на контроллеры header,column_left,footer, иначе мы не сможем вывести заголовок, подвал и левое меню в файле представления
        $data['header'] = $this->load->controller('common/header');
        $data['column_left'] = $this->load->controller('common/column_left');
        $data['footer'] = $this->load->controller('common/footer');
 
        //в качестве файла представления модуля для панели администратора использовать файл mymodul.tpl
        $this->response->setOutput($this->load->view('extension/module/mymodul.tpl', $data));
    }
 
    //обязательный метод в контроллере, он запускается для проверки разрешено ли пользователю изменять настройки данного модуля
    protected function validate() {
        if (!$this->user->hasPermission('modify', 'module/category')) {
            $this->error['warning'] = $this->language->get('error_permission');
        }
        return !$this->error;
    }
}

 

Надіслати
Поділитися на інших сайтах


34 минуты назад, mpn2005 сказал:

Класс должент быть не такой: class ControllerModulemymodul

А такой: class ControllerExtensionModuleMymodul

 

О чём и говорит ошибка: 

Fatal error: Class 'Controllerextensionmodulemymodul' not found 

Спасибо большое ,  в контроллере каталога так же поменял имя класса, дополнение установилось, все выводит отлично, однако есть маленькая проблема, когда редактирую этот модуль в панели дополнений, нажимаю сохранить  выводит ошибку "У вас нет прав для доступа к этой странице" даже при ошибке, при сохранении , статус модуля все равно меняется(включился даже с ошибкой),  в группах пользователей админу дал права на редактирование всех объектов, не помогло.

Надіслати
Поділитися на інших сайтах


1 минуту назад, freelancer сказал:

судя по коду, ваше руководство не для 2.x, а для 2.[0-2]

отсюда и проблемы

 

Я же говорю что новичок, хорошего материала по созданию модулей для своей версии не нашел, только вот эту статью, которую выше указал

Надіслати
Поділитися на інших сайтах


1 час назад, Vladislav33 сказал:

 

Я же говорю что новичок, хорошего материала по созданию модулей для своей версии не нашел, только вот эту статью, которую выше указал

Самый просто вариант - это посмотеть как всё сделано в штатном модуле движка.

 

Надіслати
Поділитися на інших сайтах

В 20.04.2018 в 17:34, legioner26 сказал:

И почему 


'SSL'

?

Такая запись для версий 2.0

по большому счету, какая разница?

Надіслати
Поділитися на інших сайтах

5 минут назад, fanatic сказал:

по большому счету, какая разница?

Да разницы особо нет. Просто чистота кода должна быть.

Надіслати
Поділитися на інших сайтах

В 20.04.2018 в 19:52, Vladislav33 сказал:

"У вас нет прав для доступа к этой странице" даже при ошибке, при сохранении , статус модуля все равно меняется(включился даже с ошибкой),  в группах пользователей админу дал права на редактирование всех объектов, не помогло.

validate в контроллере смотрите

 

if (!$this->user->hasPermission('modify', 'module/category')) {

 

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.