由Opencart 2.0.3.1上的电话字段更新引起的错误

时间:2015-10-12 13:34:53

标签: php opencart

我已根据以下提到的帖子中的三个步骤更新了电话字段,但我收到此错误:

  

PHP注意:未定义的变量:电话在第139行的/home/xcvcxvcxv/public_html/xyz.com/catalog/view/theme/journal2/template/information/contact.tpl

发布: How to add Telephone field in OpenCart 2.0.2.0 contact form

注意:我在OC 2.0.3.1

上使用期刊2主题

请建议消除此错误。

控制器:

`

public function index() {
    $this->load->language('information/contact');

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

    if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
        $mail = new Mail();
        $mail->protocol = $this->config->get('config_mail_protocol');
        $mail->parameter = $this->config->get('config_mail_parameter');
        $mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname');
        $mail->smtp_username = $this->config->get('config_mail_smtp_username');
        $mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8');
        $mail->smtp_port = $this->config->get('config_mail_smtp_port');
        $mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout');

        $mail->setTo($this->config->get('config_email'));
        $mail->setFrom($this->request->post['email']);
        $mail->setSender(html_entity_decode($this->request->post['name'], ENT_QUOTES, 'UTF-8'));
        $mail->setSubject(html_entity_decode(sprintf($this->language->get('email_subject'), $this->request->post['name']), ENT_QUOTES, 'UTF-8'));
        $mail->setText($this->request->post['enquiry'] . $mail->newline . 'Telephone: ' . $this->request->post['phone']);
        $mail->send();

        $this->response->redirect($this->url->link('information/contact/success'));
    }

    $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('information/contact')
    );

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

    $data['text_location'] = $this->language->get('text_location');
    $data['text_store'] = $this->language->get('text_store');
    $data['text_contact'] = $this->language->get('text_contact');
    $data['text_address'] = $this->language->get('text_address');
    $data['text_telephone'] = $this->language->get('text_telephone');
    $data['text_fax'] = $this->language->get('text_fax');
    $data['text_open'] = $this->language->get('text_open');
    $data['text_comment'] = $this->language->get('text_comment');

    $data['entry_name'] = $this->language->get('entry_name');
    $data['entry_email'] = $this->language->get('entry_email');
    $data['entry_phone'] = $this->language->get('entry_phone');
    $data['entry_enquiry'] = $this->language->get('entry_enquiry');

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

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

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

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

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

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

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

    $data['action'] = $this->url->link('information/contact');

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

    if ($this->config->get('config_image')) {
        $data['image'] = $this->model_tool_image->resize($this->config->get('config_image'), $this->config->get('config_image_location_width'), $this->config->get('config_image_location_height'));
    } else {
        $data['image'] = false;
    }

    $data['store'] = $this->config->get('config_name');
    $data['address'] = nl2br($this->config->get('config_address'));
    $data['geocode'] = $this->config->get('config_geocode');
    $data['telephone'] = $this->config->get('config_telephone');
    $data['fax'] = $this->config->get('config_fax');
    $data['open'] = nl2br($this->config->get('config_open'));
    $data['comment'] = $this->config->get('config_comment');

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

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

    foreach((array)$this->config->get('config_location') as $location_id) {
        $location_info = $this->model_localisation_location->getLocation($location_id);

        if ($location_info) {
            if ($location_info['image']) {
                $image = $this->model_tool_image->resize($location_info['image'], $this->config->get('config_image_location_width'), $this->config->get('config_image_location_height'));
            } else {
                $image = false;
            }

            $data['locations'][] = array(
                'location_id' => $location_info['location_id'],
                'name'        => $location_info['name'],
                'address'     => nl2br($location_info['address']),
                'geocode'     => $location_info['geocode'],
                'telephone'   => $location_info['telephone'],
                'fax'         => $location_info['fax'],
                'image'       => $image,
                'open'        => nl2br($location_info['open']),
                'comment'     => $location_info['comment']
            );
        }
    }

    if (isset($this->request->post['name'])) {
        $data['name'] = $this->request->post['name'];
    } else {
        $data['name'] = $this->customer->getFirstName();
    }

    if (isset($this->request->post['email'])) {
        $data['email'] = $this->request->post['email'];
    } else {
        $data['email'] = $this->customer->getEmail();
    }

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

    if ($this->config->get('config_google_captcha_status')) {
        $this->document->addScript('https://www.google.com/recaptcha/api.js');

        $data['site_key'] = $this->config->get('config_google_captcha_public');
    } else {
        $data['site_key'] = '';
    }

    $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/information/contact.tpl')) {
        $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/information/contact.tpl', $data));
    } else {
        $this->response->setOutput($this->load->view('default/template/information/contact.tpl', $data));
    }
}

public function success() {
    $this->load->language('information/contact');

    $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('information/contact')
    );

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

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

    $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));
    }
}

protected function validate() {
    if ((utf8_strlen($this->request->post['name']) < 3) || (utf8_strlen($this->request->post['name']) > 32)) {
        $this->error['name'] = $this->language->get('error_name');
    }

    if (!preg_match('/^[^\@]+@.*.[a-z]{2,15}$/i', $this->request->post['email'])) {
        $this->error['email'] = $this->language->get('error_email');
    }

    if ((utf8_strlen($this->request->post['phone']) < 1)) {
        $this->error['phone'] = $this->language->get('error_phone');
    }

    if ((utf8_strlen($this->request->post['enquiry']) < 10) || (utf8_strlen($this->request->post['enquiry']) > 3000)) {
        $this->error['enquiry'] = $this->language->get('error_enquiry');
    }

    if ($this->config->get('config_google_captcha_status')) {
        $recaptcha = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret=' . urlencode($this->config->get('config_google_captcha_secret')) . '&response=' . $this->request->post['g-recaptcha-response'] . '&remoteip=' . $this->request->server['REMOTE_ADDR']);

        $recaptcha = json_decode($recaptcha, true);

        if (!$recaptcha['success']) {
            $this->error['captcha'] = $this->language->get('error_captcha');
        }
    }

    return !$this->error;
}

}`

1 个答案:

答案 0 :(得分:0)

只需在控制器中添加

即可
if (isset($this->request->post['phone'])) {
    $data['phone'] = $this->request->post['phone'];
} else {
    $data['phone'] = '';
}

之后

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

就是这样。