2017-09-25 11 views
1

OpenCart 3.0.2.0の私のテーマモジュールを更新しました。通常これは正常に動作しています。しかし、1つの小さな問題を作成します。セーブデータを削除しません。もし私がOpencart 3でモジュールをアンインストールする場合は、

私は、管理者(拡張機能>拡張機能>モジュール)から私のカスタムテーマモジュールをアンインストールします。しかし、フロントサイド&管理側から保存されたデータを削除しません。 いつ、私は再度インストールする&編集モジュール。したがって、保存されたデータの上には削除されません。また、保存されたデータ設定は前面から削除されません。それでもデータは保存されます。

これは古い(2.3.0.2)バージョンで正常に動作しています。しかし、ここでは、私は判断できません。なぜこれが最新バージョンで起こるのか? あなたは何か提案をお願いできますか?私たちのファイルを次に示します。あなたのコントローラにアンインストール機能を作成することができます

mytheme.php(管理\コントローラ\拡張\モジュール)

<?php 
class ControllerExtensionModuleMytheme extends Controller { 

    private $error = array(); 

    public function index() { 

     $language = $this->load->language('extension/module/mytheme'); 
     $data = array_merge($language); 

     $this->document->setTitle($this->language->get('heading_title')); 

     $this->load->model('setting/setting'); 

     $this->load->model('tool/image'); 

     if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) { 
      $this->model_setting_setting->editSetting('mytheme', $this->request->post);  

      $this->session->data['success'] = $this->language->get('text_success'); 

      if(isset($this->request->post['save_stay']) and $this->request->post['save_stay']=1) 
      $this->response->redirect($this->url->link('extension/module/mytheme', 'user_token=' . $this->session->data['user_token'], true)); 
      else 
      $this->response->redirect($this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=module', true)); 

     } 

      $data['text_image_manager'] = 'Image manager'; 
      $data['user_token'] = $this->session->data['user_token'];  

     if (isset($this->session->data['success'])) { 
      $data['success'] = $this->session->data['success']; 
      unset($this->session->data['success']); 
     } else { 
      $data['success'] = ''; 
     } 

     // store config data 

     $config_data = array(

     'mytheme_background_color', 
     'mytheme_button_color', 
     'mytheme_powered_text', 

     ); 

     foreach ($config_data as $conf) { 
      if (isset($this->request->post[$conf])) { 
       $data[$conf] = $this->request->post[$conf]; 
      } else { 
       $data[$conf] = $this->config->get($conf); 
      } 
     } 


     if (isset($this->error['warning'])) { 
      $data['error_warning'] = $this->error['warning']; 
     } else { 
      $data['error_warning'] = ''; 
     } 

     $data['breadcrumbs'] = array(); 

     $data['breadcrumbs'][] = array(
      'text' => $this->language->get('text_home'), 
      'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true) 
     ); 

     $data['breadcrumbs'][] = array(
      'text' => $this->language->get('text_extension'), 
      'href' => $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=module', true) 
     ); 

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


     $data['action'] = $this->url->link('extension/module/mytheme', 'user_token=' . $this->session->data['user_token'], true); 

     $data['cancel'] = $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=module', true); 

     if (isset($this->request->post['mytheme_module'])) { 
      $modules = explode(',', $this->request->post['mytheme_module']); 
     } elseif ($this->config->get('mytheme_module') != '') { 
      $modules = explode(',', $this->config->get('mytheme_module')); 
     } else { 
      $modules = array(); 
     }   

     $this->load->model('localisation/language'); 

     $data['languages'] = $this->model_localisation_language->getLanguages(); 

     $data['modules'] = $modules; 

     if (isset($this->request->post['mytheme_module'])) { 
      $data['mytheme_module'] = $this->request->post['mytheme_module']; 
     } else { 
      $data['mytheme_module'] = $this->config->get('mytheme_module'); 

     } 

     $data['mytheme_modules'] = array(); 

     $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('extension/module/mytheme', $data)); 
    } 

    protected function validate() { 
     if (!$this->user->hasPermission('modify', 'extension/module/mytheme')) { 
      $this->error['warning'] = $this->language->get('error_permission'); 
     } 

     return !$this->error; 
    } 
} 

答えて

2

public function uninstall() { 
     $this->load->model('setting/setting'); 
     $this->model_setting_setting->deleteSetting('mytheme'); 

} 

この関数を呼び出す必要はありません。モジュールをアンインストールすると、自動的に呼び出されます。

幸運のベスト。 :)

+0

あなたのコードで正常に動作します。ありがとう。しかし、1つの質問、なぜこのタイプのコードなしで他のデフォルトのモジュールをアンインストールした後にデータを保存しません。他のデフォルトモジュールでこのコードを使用していません。 – user8302249

+0

opencartの以前のバージョンでは、アンインストールモジュール中にdeleteSetting関数が自動的に呼び出されます。しかし、この新しいバージョンでは、あなたはそれを自分で呼び出す必要があります(古いデータを削除する必要がある場合)。 これがあなたを助けた場合、答えに投票することを忘れないでください。 :) ありがとうございます。 –

+0

ありがとうございました。 – user8302249

関連する問題