Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 06.10.2017 13:56:34

Получение ajax-данных формы

итак, есть форма, отсылающие данные по роуту
Route::post('/contact/sendMessage', 'ContactFormValidationController@validateForm');
controller:

public function validateForm(Request $request)
    {
       
        $this->validate($request, [
            'fio' => 'bail|required|string|max:36',
            'email' => 'email|required',
            'telephone' => 'regex:/^(\+){0,1}[0-9]{10,12}$/|required',
            'attachmentFile' => 'file'
        ]);
       
        if($request->hasFile('attachmentFile') && $request->file('attachmentFile')->isValid()){
                        $extension = $request->attachmentFile->extension();
            $path_to_attach = '/attachmentFiles/'.$request->fio.'.'.$extension;
            $request->file('attachmentFile')->move(public_path().'/attachmentFiles', $request->fio.'.'.$request->attachmentFile->extension());

           
                DB::table('cf_Orders')->insert([
                    'id' => 0,
                    'fio' => $request->fio,
                    'email' => $request->email,   
                    'attachment' => $path_to_attach
                ]);
               
              Mail::send('emails.orders', ['user' => $request], function ($m) use ($request) {
                    $m->from('contact@pravoedelo.ua', 'Заявка со страницы контактов');
                    $m->to('away4people@gmail.com')->subject('Заявка со страницы контактов!');
              });
        }
        return redirect('/');
}

хочу переделать на ajax-версию:

<script>
    document.addEventListener('DOMContentLoaded', function(){
    $('#form').on('submit', function(){
       var form = $('#form');
       $.ajax({
          url : form.attr('action'),
          type : form.attr('method'),
          data : form,
          success:function(){
              $('#openModal').fadeIn();
          },
          error:function(errors){
              alert += "<div class='alert alert-danger'><ul>";
                    $.each(errors, function(index, error){
                        alert += "<li> + error + </li>";
                    });
            alert += "</ul></div>";
            $('#append').html(alert);
            console.log(errors);
          }
       });
       return false;
    });
});
</script>

но при отправке формы теперь получаю 500:
WK29PKK.png

как обрабатывать данные, пришедшие из формы ajax-ом? нипонял

Не в сети

#2 06.10.2017 14:21:03

Re: Получение ajax-данных формы

если отправлять не через Route::post, а Route::get , получаю 405 ошибку в коносли

Не в сети

#3 06.10.2017 17:26:32

Re: Получение ajax-данных формы

Отправлять Post'ом все же нужно, ошибка в php коде, дебаж.
В ajax data : form.serealize(),

Не в сети

Подвал раздела