Задача: создать форму обратного звонка и обработать её стандартными методами опенкарта.
Для начала создаем форму.
Обычныю форму в любом месте, хоть footer.tpl(.twig) хоть модуль какой.
Главное указать путь до обработчика, например: /index.php?route=mail/callback.
<form action="/index.php?route=mail/callback" method="post">
<input type="text" name="name">
<input type="text" name="phone">
<button type="submit">Отправить</button>
</form>
Теперь необходимо создать сам обработчик, храниться он может где угодно, но в нашем примере будет здесь: \catalog\controller\mail\callback.php
class ControllerMailCallback extends Controller {
private $ error = array();
public function index() {
$ mail = new Mail($ this->config->get('config_mail_engine'));
$ 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->config->get('config_email'));
//$ mail->setReplyTo($ this->request->post['email']);
$ mail->setSender(html_entity_decode($ this->request->post['name'], ENT_QUOTES, 'UTF-8'));
$ mail->setSubject(html_entity_decode(sprintf('Заявка с сайта', $ this->request->post['name']), ENT_QUOTES, 'UTF-8'));
$ mail->setHtml('
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Заявка с сайта</title>
</head>
<body>
<p><strong>Имя</strong>: '.$ this->request->post['name'].'</p>
<p><strong>Телефон</strong>: '.$ this->request->post['phone'].'</p>
<p><strong>Время для звонка</strong>: '.$ this->request->post['other[Время звонка]'].'</p>
</body>
</html>
');
$ mail->send();
$ this->response->redirect($ this->url->link('information/contact/success'));
}
}
Важно!
Класс ControllerMailCallback так называется не случайно!
$ this->response->redirect($ this->url->link('information/contact/success'));
Эта часть кода отправит пользователя на стандартную страницу успешной отправки формы, вы можете создать собственную или исправить существующую.