2016-12-07 2 views
0

私のモジュールの管理部分にこの問題があります。イムは、フォルダを含むサイトのための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; 
    } 
} 
関連する問題