js отправка формы и подсветка не заполненных/error полей
Используем serializeArray() для сбора всех input
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
$('button#send-btn').click(function() { if ($('input[name=agreement]').is(':checked')) { var str = $('#myForm > form').serializeArray(); // Собираем все данные формы $.ajax({ type: "POST", url: "/sendmail", data: str, success: function(msg) { if (msg) { json = $.parseJSON(msg); if (json.result) { $('#tourForm').html('<div id="success-send-order">Успешно отправлено</div>'); } else if (json.errors) { $('#myForm form input').css('border', 'none'); $.each(json.errors, function(key) { $('#myForm form input[name="' + key + '"]') .css('border', "1px solid red"); }); } } else { alert('Ошибка ответа ajax'); } } }); } else { alert('Нужно принять условия оферты'); } return false; }); |
Обработчик Laravel
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
/** * Валидация формы */ public function validationdForm(Request $request) { $rules = array( 'fio' => 'required|min:5', 'email' => 'required|email', 'phone' => 'required', 'address' => 'required', ); $result = Validator::make($request->all(), $rules); if ($result->errors()->all()) { return json_encode(array('errors' => $result->errors())); } else { return $this->sendForm(); } } |
Отправка письма
1 2 3 4 5 6 7 8 9 10 11 |
public function sendForm() { Config::set('mail.driver', 'sendmail'); Mail::send('mail.order', array('key' => 'value'), function ($message) { $message->from('noreply@matveevs.ru', 'Наш сайт'); $message->to('andrey@matveevs.ru', 'site.ru')->subject('Заявка с сайта site.ru'); }); return json_encode(array('result' => "success")); } |
Подключаем драйвер sendmail
Config::set(‘mail.driver’, ‘sendmail’);