Как сохранить данные из модала с помощью ajax в Laravel? - PullRequest
0 голосов
/ 13 июня 2019

Я пытаюсь сохранить данные из модального в базу данных, и вот что я попробовал.Модальные показы, показы формы, однако, когда я пытаюсь сохранить данные, ничего не происходит.В консоли я получаю 2 ошибки

  1. Не удалось загрузить ресурс: сервер ответил с состоянием 500 (Внутренняя ошибка сервера)
  2. Не удалось загрузить ресурс: сервер ответил сстатус 422 (необработанный объект).

модальный

<div class="modal fade" id="todolist-modal" tabindex="-1" role="dialog"  aria-hidden="true">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <h2 class="modal-title" id="todo-list-tile">Add New Todo</h2>
            </div>
            <div class="modal-body" id="todo-list-body">
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-warning" data-dismiss="modal">Close</button>
                <button type="button" class="btn btn-primary" id="todo-list-save-btn">Save changes</button>
            </div>
        </div>
    </div>
</div>

JavaScript

$('#todo-list-save-btn').click(function(event) {
    event.preventDefault();

    var form = $('#todo-list-body form'),
    url = form.attr('action'),
    method = 'POST';

    form.find('.help-block').remove();
    form.find('.form-group').removeClass('has-error');

    $.ajax({
        url: url,
        method: method,
        data: form.serialize(),
        success: function(response) {

        },

        error: function(xhr) {

            var error = xhr.responseJSON;
            if ($.isEmptyObject(error) == false) {

                $.each(error.errors, function(key, value) {
                    $('#' + key)
                        .closest('.form-group')
                        .addClass('has-error')
                        .append('<span class="help-block"><strong>' + value + '</strong></span>')

                });
            }
        }
    });

Форма

<div class="alert alert-success" id="add-new-alert" style="display:none"></div>


{!! Form::model($todoLists, ['route' => 'todolists.store']) !!}
    @csrf

    <div class="form-group">
        <label for="" class="control-label">List Name</label>
        {!! Form::text('title', 
                null, 
                [
                    'class' => 'form-control',
                    'id' => 'item',
                    'placeholder'=>'item'
                ]
            ) 
        !!}
    </div>
    <div class="form-group">
        <label for="" class="control-label">Description</label>
        {!! Form::textarea('description', 
                null, 
                [
                    'class' => 'form-control', 
                    'id' => 'description', 
                    'placeholder'=>'description',
                    'rows' => 2
                ]
            ) 
        !!}
    </div>
{!! Form::close() !!}

Маршрут

Route::resource('todolists', 'TodoController');

Контроллер

public function create()
{
    $todoLists = new Todo();
    return view ('admin.todo.form', compact('todoLists'));
}

/**
 * Store a newly created resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function store(Request $request)
{
    $this->validate($request, [
        'title' => 'required|min:5',
        'description' => 'min:5'
    ]);

    $todoList = $request->user()
                    ->todoLists()
                    ->create($request->all());

    return view("todolists.item", compact('todoList'));
}

Ответы [ 2 ]

0 голосов
/ 14 июня 2019

Пожалуйста, проверьте модель Todolists
В твоих тодолистах модель Класс:

protected $fillable = ['title', 'description'];

как:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Todolist extends Model
{
    protected $fillable = ['title', 'description'];
}

Поскольку вы используете create() метод,
и проверьте ваши столбцы еще раз, чтобы убедиться, что ваши данные могут быть вставлены в базу данных.

0 голосов
/ 13 июня 2019
$todoList = $request->user()
                ->todoLists()
                ->create($request->all());

Как вы настраиваете отношения в Моделях?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...