Как сделать форму для отправления заявки с сайта на почту администратора?

0

Здравствуйте!

Объясните, как в Codeigniter создать форму отправки заявки на почту, чтобы данная форма открывалась при нажатии на кнопку и привязывалась к конкретному email?

html
php

1 ответов

0

Для начала нужно сделать модальное окно. Если пользуетесь 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">&times;</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">&times;</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, лучше использовать кодеингниторовские формы:

https://codeigniter.com/user_guide/helpers/form_helper.html

Sign up or Log in to write an answer