2016-12-07 31 views
0

我在模块的管理部分有这个麻烦。 IM使用搭配chmod -R 777网站包含的文件夹,但方法验证返回我permission_errorOpenCart:不能保存自定义模块设置

Opencart的版本:2.3.0.2

模块代码:

<?php 
class ControllerModulemymodul extends Controller { 
    private $error = array(); 

    public function index() { 
     $this->load->language('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('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; 
    } 
} 
+0

OpenCart版本是你使用的吗?另外,请提及您的模块的所有文件代码。 – HarnishDesign

回答

1

你的模块代码与Opencart的版本兼容2.3.0.2。您需要将您的代码与其他任何默认的OpenCart模块代码进行比较。

OpenCart在版本2.3.0.2中进行了一些结构更改。

尝试替换模块中的以下代码。

<?php 
class ControllerExtensionModuleMymodul 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->session->data['success'] = $this->language->get('text_success'); 

      $this->response->redirect($this->url->link('extension/extension', 'token=' . $this->session->data['token'] . '&type=module', true)); 
     } 

     // ваши переменные 
     $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'], true) 
     ); 
     $data['breadcrumbs'][] = array(
      'text' => $this->language->get('text_extension'), 
      'href' => $this->url->link('extension/extension', 'token=' . $this->session->data['token'] . '&type=module', true) 
     ); 

     $data['breadcrumbs'][] = array(
      'text' => $this->language->get('heading_title'), 
      'href' => $this->url->link('extension/module/mymodul', 'token=' . $this->session->data['token'], true) 
     ); 

     //ссылки для формы и кнопки "cancel" 
     $data['action'] = $this->url->link('extension/module/mymodul', 'token=' . $this->session->data['token'], true); 
     $data['cancel'] = $this->url->link('extension/extension', 'token=' . $this->session->data['token'] . '&type=module', true); 

     //переменная с статусом модуля 
     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', $data)); 
    } 

    //обязательный метод в контроллере, он запускается для проверки разрешено ли пользователю изменять настройки данного модуля 
    protected function validate() { 
     if (!$this->user->hasPermission('modify', 'extension/module/mymodul')) { 
      $this->error['warning'] = $this->language->get('error_permission'); 
     } 
     return !$this->error; 
    } 
} 
相关问题