opencart中如何在首页创建客户信息表单并将表单数据存入数据库

How to create customer information form in home page and form data store in database in opencart

我已尝试创建表单,但数据未保存在数据库中 table。

我写了下面的代码。

view/common/home.tpl:

<form action="" method="post" enctype="multipart/form-data" class="form-horizontal form" id="contact">
<legend><?php echo $text_form; ?></legend>
          <div class="form-group required">
            <label class="col-sm-3 control-label" for="input_first_name"><?php echo $entry_first_name; ?></label>
            <div class="col-sm-9">
              <input type="text" name="first_name" value="<?php echo $first_name; ?>" id="input_first_name" class="form-control" />
              <?php if ($error_first_name) { ?>
              <div class="text-danger"><?php echo $error_first_name; ?></div>
              <?php } ?>
            </div>
          </div>
<div class="buttons">
          <div class="pull-right">
            <input class="btn btn-primary" type="submit" name="submit" value="<?php echo $button_submit; ?>" />
          </div>
        </div>
</form>

controller/common/home.php

class ControllerCommonHome extends Controller 
{
    public function index() {

        if (isset($this->request->get['route'])) {
            $this->document->addLink(HTTP_SERVER, 'canonical');
        }

        $this->load->language('common/home');

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

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

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

        $data['breadcrumbs'][] = array(
            'text' => $this->language->get('text_account'),
            'href' => $this->url->link('common/home', '', 'SSL')
        );

        $url = '';

        if (isset($this->request->get['page'])) {
            $url .= '&page=' . $this->request->get['page'];
        }

        $data['breadcrumbs'][] = array(
            'text' => $this->language->get('heading_title'),
            'href' => $this->url->link('common/home', $url, 'SSL')
        );

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

        if (isset($this->request->get['page'])) {
            $page = $this->request->get['page'];
        } else {
            $page = 1;
        }

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



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



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

        $this->load->model('common/home');

        $data['column_left'] = $this->load->controller('common/column_left');
        $data['column_right'] = $this->load->controller('common/column_right');
        $data['content_top'] = $this->load->controller('common/content_top');
        $data['content_bottom'] = $this->load->controller('common/content_bottom');
        $data['footer'] = $this->load->controller('common/footer');
        $data['header'] = $this->load->controller('common/header');

        if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/common/home.tpl')) {
            $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/common/home.tpl', $data));
        } else {
            $this->response->setOutput($this->load->view('default/template/common/home.tpl', $data));
        }
    }

    public function add() {
        $this->load->language('common/home');

        $this->load->model('common/home');

        if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
            $return_id = $this->model_common_home->addCustomerbook($this->request->post);

            // Add to activity log
            $this->load->model('common/home');



            $this->response->redirect($this->url->link('common/home/success', '', 'SSL'));
        }

        $this->document->setTitle($this->language->get('heading_title'));
        $this->document->addScript('catalog/view/javascript/jquery/datetimepicker/moment.js');
        $this->document->addScript('catalog/view/javascript/jquery/datetimepicker/bootstrap-datetimepicker.min.js');
        $this->document->addStyle('catalog/view/javascript/jquery/datetimepicker/bootstrap-datetimepicker.min.css');

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

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

        $data['breadcrumbs'][] = array(
            'text' => $this->language->get('text_account'),
            'href' => $this->url->link('common/home', '', 'SSL')
        );

        $data['breadcrumbs'][] = array(
            'text' => $this->language->get('heading_title'),
            'href' => $this->url->link('common/home/add', '', 'SSL')
        );

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

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


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


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

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

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

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

        $data['action'] = $this->url->link('common/home/add', '', 'SSL');



        if (isset($this->request->post['firstname'])) {
            $data['firstname'] = $this->request->post['firstname'];
        } elseif (!empty($order_info)) {
            $data['firstname'] = $order_info['firstname'];
        } else {
            $data['firstname'] = $this->customer->getFirstName();
        }

        // Captcha
        if ($this->config->get($this->config->get('config_captcha') . '_status') && in_array('return', (array)$this->config->get('config_captcha_page'))) {
            $data['captcha'] = $this->load->controller('captcha/' . $this->config->get('config_captcha'), $this->error);
        } else {
            $data['captcha'] = '';
        }


        $data['back'] = $this->url->link('common/home', '', 'SSL');

        $data['column_left'] = $this->load->controller('common/column_left');
        $data['column_right'] = $this->load->controller('common/column_right');
        $data['content_top'] = $this->load->controller('common/content_top');
        $data['content_bottom'] = $this->load->controller('common/content_bottom');
        $data['footer'] = $this->load->controller('common/footer');
        $data['header'] = $this->load->controller('common/header');

        if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/account/return_form.tpl')) {
            $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/account/return_form.tpl', $data));
        } else {
            $this->response->setOutput($this->load->view('default/template/account/return_form.tpl', $data));
        }
    }

    protected function validate() {
      .......
    }

    public function success() {
        $this->load->language('common/home');

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

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

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

        $data['breadcrumbs'][] = array(
            'text' => $this->language->get('heading_title'),
            'href' => $this->url->link('account/return', '', 'SSL')
        );

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

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

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

        $data['continue'] = $this->url->link('common/home');

        $data['column_left'] = $this->load->controller('common/column_left');
        $data['column_right'] = $this->load->controller('common/column_right');
        $data['content_top'] = $this->load->controller('common/content_top');
        $data['content_bottom'] = $this->load->controller('common/content_bottom');
        $data['footer'] = $this->load->controller('common/footer');
        $data['header'] = $this->load->controller('common/header');

        if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/common/success.tpl')) {
            $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/common/success.tpl', $data));
        } else {
            $this->response->setOutput($this->load->view('default/template/common/success.tpl', $data));
        }
    }

}

model/common/home.php

class ModelCommonHome extends Model {
    public function addCustomerbook($data) {

        $this->event->trigger('pre.home.add', $data);

        $this->db->query("INSERT INTO `" . DB_PREFIX . "contact_book` SET contact_id = '" . (int)$data['id'] . "', first_name = '" . $this->db->escape($data['first_name']) . "' ");

        $id = $this->db->getLastId();

        $this->event->trigger('post.home.add', $id);

        return $id;

    }

我不太擅长MVC所以请帮我解决这个问题。

Sujit,您需要检查 opencart 联系我们表单功能,以便 post 与控制器联系。联系我们表格不会将数据存储到数据库,但您将对 控制器 文件

进行以下更改
$this->load->model('catalog/contact');
$this->model_catalog_contact->addContact($this->request->post;  

model/Catalog/contact.php

在其上创建 addContact($data) 函数,然后如您所知进行插入查询。