Как сделать форму для отправления заявки с сайта на почту администратора?
Здравствуйте!
Объясните, как в Codeigniter создать форму отправки заявки на почту, чтобы данная форма открывалась при нажатии на кнопку и привязывалась к конкретному email?
1 ответов
Для начала нужно сделать модальное окно. Если пользуетесь Bootstrap, можно сделать так:
Bootstrap 3
<!-- Button trigger modal -->
<a data-toggle="modal" href="#myModal" class="btn btn-primary btn-lg">Launch demo modal</a>
<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title">Modal title</h4>
</div>
<div class="modal-body">
<!-- HTML Форму для email вставить сюда -->
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
или Bootstrap 4
<div class="modal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Modal title</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<!-- HTML форму для email вставить сюда -->
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary">Кнопку можно привязать к форме, если будет желание</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
В контроллере Codeigniter можно добавить метод, примерно такой:
class Sendingemail_Controller extends CI_Controller {
function __construct() {
parent::__construct();
$this->load->library('session');
$this->load->helper('form');
}
public function index() {
$this->load->helper('form');
$this->load->view('contact_email_form');
}
public function send_mail() {
$from_email = "[email protected]";
$to_email = $this->input->post('email');
$message = $this->input->post('message');
$config = Array(
'protocol' => 'smtp',
'smtp_host' => 'ssl://smtp.googlemail.com',
'smtp_port' => 465,
'smtp_user' => 'ПОЧТА_GMAIL',
'smtp_pass' => 'ПАРОЛЬ_GMAIL',
'mailtype' => 'html',
'charset' => 'UTF-8'
);
//Подгрузка библиотеки для работы с email
$this->load->library('email', $config);
$this->email->from($from_email, 'Identification');
$this->email->to($to_email);
$this->email->subject('Тестовая тема');
$this->email->message($message);
//Отправка email
if($this->email->send())
$this->session->set_flashdata("email_sent","Email отправлен успешно.");
else
$this->session->set_flashdata("email_sent","Ошибка. Email не отправлен.");
$this->load->view('contact_email_form');
}
}
Потом нужно создать в папке view файл contact_email_form.php и в него вставить код для модального окна и в body модального окна этот код:
<?php
echo $this->session->flashdata('email_sent');
echo form_open('/Sendingemail_Controller/send_mail');
?>
<input type = "email" name = "email" required />
<textarea name="message" rows="5" cols="33" placeholder="Сообщение" required></textarea>
<input type = "submit" value = "Отправить">
<?php
echo form_close();
?>
и в роутинге написать
$route['email'] = 'Sendingemail_Controller';
И потом вызвать страницу с формой отправки email и вызвать модальное окно:
http://localhost/index.php/email
Чтобы без перезагрузки страницы отправлять email, здесь есть хорошая статья как это сделать с помощью jQuery:
https://fructcode.com/ru/blog/how-to-send-html-form-with-ajax/
P.S. конфиг $config из контроллера, лучше потом вынести в отдельный конфиг для email, это просто пример.
P.S. вместо обычного html input и textarea, лучше использовать кодеингниторовские формы: