Jump to content

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;
    }
}

 

Share this post


Link to post
Share on other sites

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

А такой: class ControllerExtensionModuleMymodul

 

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

Fatal error: Class 'Controllerextensionmodulemymodul' not found 

Share this post


Link to post
Share on other sites

И почему 

'SSL'

?

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

Share this post


Link to post
Share on other sites
'href' => $this->url->link('common/dashboard', 'token=' . $this->session->data['token'], true )

Share this post


Link to post
Share on other sites
34 минуты назад, mpn2005 сказал:

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

А такой: class ControllerExtensionModuleMymodul

 

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

Fatal error: Class 'Controllerextensionmodulemymodul' not found 

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites
1 минуту назад, freelancer сказал:

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

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

 

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

Share this post


Link to post
Share on other sites
1 час назад, Vladislav33 сказал:

 

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

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

 

Share this post


Link to post
Share on other sites
В 20.04.2018 в 17:34, legioner26 сказал:

И почему 


'SSL'

?

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

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

Share this post


Link to post
Share on other sites
5 минут назад, fanatic сказал:

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

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

Share this post


Link to post
Share on other sites

дело не в чистоте, семантически не верно писать SSL там, где должно быть true

Share this post


Link to post
Share on other sites
В 20.04.2018 в 19:52, Vladislav33 сказал:

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

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

 

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

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.