【问题标题】:Does not remove save data. if, I do uninstall module in Opencart 3不删除保存数据。如果,我在 Opencart 3 中卸载模块
【发布时间】:2017-09-25 13:04:55
【问题描述】:

我已经为 OpenCart 3.0.2.0 更新了我的主题模块。通常这工作正常。但是,确实会产生一个小问题。

如果,我确实从管理员卸载了我的自定义主题模块(扩展>扩展>模块)。但是,不会从前端和管理端删除保存的数据。 何时,我将再次安装和编辑模块。所以,不会删除上面保存的数据。此外,保存的数据设置不会从前面删除。它仍然可以保存数据。

这在旧 (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;
    }
}

【问题讨论】:

    标签: php opencart opencart2.x opencart-module opencart-3


    【解决方案1】:

    您可以在控制器中创建卸载功能。

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

    你不需要调用这个函数。卸载模块时会自动调用。

    祝你好运。 :)

    【讨论】:

    • 可以正常使用您的代码。谢谢。但是,有一个问题,为什么在卸载没有此类型代码的其他默认模块后删除保存数据。没有在任何其他默认模块中使用任何此代码。
    • 在以前的(版本) opencart 中,它在卸载模块时自动调用 deleteSetting 函数。但是在这个新版本中,您需要自己调用它(以防您需要删除旧数据)如果这对您有帮助,请不要忘记为答案投票。 :) 谢谢。
    • 非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2020-04-03
    • 1970-01-01
    • 2019-09-09
    • 2013-12-05
    • 2014-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多