2012-09-24 19 views
3

我知道如何在安装插件时在wordpress中创建表格。但在opencart我不知道。请帮助了解如何在安装模块时创建新表格。我粘贴了用于安装模块的test.php代码。在opencart中安装模块时创建表格

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

     public function index() { 
      $this->load->language('module/test'); 

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

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

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

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

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

      $this->data['heading_title'] = $this->language->get('heading_title'); 

      $this->data['text_enabled'] = $this->language->get('text_enabled'); 
      $this->data['text_disabled'] = $this->language->get('text_disabled'); 
      $this->data['text_content_top'] = $this->language->get('text_content_top'); 
      $this->data['text_content_bottom'] = $this->language->get('text_content_bottom');  
      $this->data['text_column_left'] = $this->language->get('text_column_left'); 
      $this->data['text_column_right'] = $this->language->get('text_column_right'); 

      $this->data['entry_product'] = $this->language->get('entry_product'); 
      $this->data['entry_limit'] = $this->language->get('entry_limit'); 
      $this->data['entry_image'] = $this->language->get('entry_image'); 
      $this->data['entry_layout'] = $this->language->get('entry_layout'); 
      $this->data['entry_position'] = $this->language->get('entry_position'); 
      $this->data['entry_status'] = $this->language->get('entry_status'); 
      $this->data['entry_sort_order'] = $this->language->get('entry_sort_order'); 

      $this->data['button_save'] = $this->language->get('button_save'); 
      $this->data['button_cancel'] = $this->language->get('button_cancel'); 
      $this->data['button_add_module'] = $this->language->get('button_add_module'); 
      $this->data['button_remove'] = $this->language->get('button_remove'); 

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

      if (isset($this->error['image'])) { 
       $this->data['error_image'] = $this->error['image']; 
      } else { 
       $this->data['error_image'] = array(); 
      } 

      $this->data['breadcrumbs'] = array(); 

      $this->data['breadcrumbs'][] = array(
       'text'  => $this->language->get('text_home'), 
       'href'  => $this->url->link('common/home', 'token=' . $this->session->data['token'], 'SSL'), 
       'separator' => false 
      ); 

      $this->data['breadcrumbs'][] = array(
       'text'  => $this->language->get('text_module'), 
       'href'  => $this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL'), 
       'separator' => ' :: ' 
      ); 

      $this->data['breadcrumbs'][] = array(
       'text'  => $this->language->get('heading_title'), 
       'href'  => $this->url->link('module/test', 'token=' . $this->session->data['token'], 'SSL'), 
       'separator' => ' :: ' 
      ); 

      $this->data['action'] = $this->url->link('module/test', 'token=' . $this->session->data['token'], 'SSL'); 

      $this->data['cancel'] = $this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL'); 

      $this->data['token'] = $this->session->data['token']; 

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

      $this->load->model('catalog/product'); 

      if (isset($this->request->post['test_product'])) { 
       $products = explode(',', $this->request->post['test_product']); 
      } else {   
       $products = explode(',', $this->config->get('test_product')); 
      } 

      $this->data['products'] = array(); 

      foreach ($products as $product_id) { 
       $product_info = $this->model_catalog_product->getProduct($product_id); 

       if ($product_info) { 
        $this->data['products'][] = array(
         'product_id' => $product_info['product_id'], 
         'name'  => $product_info['name'] 
        ); 
       } 
      } 

      $this->data['modules'] = array(); 

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

      $this->load->model('design/layout'); 

      $this->data['layouts'] = $this->model_design_layout->getLayouts(); 

      $this->template = 'module/test.tpl'; 
      $this->children = array(
       'common/header', 
       'common/footer' 
      ); 

      $this->response->setOutput($this->render()); 
     } 

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

      if (isset($this->request->post['test_module'])) { 
       foreach ($this->request->post['test_module'] as $key => $value) { 
        if (!$value['image_width'] || !$value['image_height']) { 
         $this->error['image'][$key] = $this->language->get('error_image'); 
        } 
       } 
      } 

      if (!$this->error) { 
       return true; 
      } else { 
       return false; 
      } 
     } 
    } 
    ?> 

回答

4

您可以在控制器中添加一个install()方法,该方法将在安装发生时运行。简单地执行SQ​​L中有

+0

是的,我才知道这一点。但我不知道该怎么做。你可以让我知道吗? – user1515728

1

上述两个页面有一个小错误: ,这些都在query结束失踪ENGINE...,所以修复:

$this->db->query("CREATE TABLE IF NOT EXISTS `" . DB_PREFIX . "table_Name` (
     `id` int(11) NOT NULL AUTO_INCREMENT, 
     `date_added` datetime NOT NULL, 
     `status` tinyint(1) NOT NULL, 
     `fieldName` text(2) NOT NULL, 
     PRIMARY KEY (`id`) 
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=0;");