Laravel по-русски

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

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

#1 14.06.2017 23:23:24

Не получается обновить форму через put method

Всем привет!

В метод update класса FilmController приходит пустой $request (var_dump($request['name'] отдает null),
хотя fd.get('name'), перед отправкой ajax, выдает значение имени.

Даже пробовал руками присваивать переменную:
fd.append('name', 'boo');
Все равно пусто

Подскажите, где туплю?

Есть форма:

<form name="editFilmForm" id="editFilmForm" method="post">
        <input type="hidden" name="_method" value="put">
        <div class="form-group">
            <label for="name">Name</label>
            <input type="text" name="name" class="form-control" id="name" value="{{$film->name}}" required>
        </div>
        <input type="hidden" name="_token" value="{{ Session::token()  }}">
        <input type="hidden" name="filmId" value="{{ $film->id }}">
        <button type="submit" class="btn btn-default editFilmSubmit">Submit</button>
</form>

Route:

Route::resource('films', 'FilmController');

Controller:

class FilmController extends Controller
{
    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        var_dump($request['name ']);die;
    }
}

JS:

$('[name="editFilmForm"]').on('submit', function (e) {
        var fd= new FormData(this);
        var url = '/films/' + $('[name="filmId"]').val();
        var token = $('[name="_token"]').val();
        fd.append('token', token);
        fd.append('_method', 'put');
        e.preventDefault();

        // команда ниже успешно отдает значение имени
        // console.log(fd.get('name'));return false;

        $.ajax({
            type: 'post',
            url: url,
            data: fd,
            mimeType: "multipart/form-data",
            contentType: false,
            cache: false,
            processData: false,
            success: function (data) {
                console.log(data);return false;
            },
            error: function (data) {
                console.log(data['responseText']);return false;
            }
        });
});

Изменено Triggo (14.06.2017 23:26:25)

Не в сети

#2 15.06.2017 07:36:01

Re: Не получается обновить форму через put method

у тебя не $request['name'] а $request['name ']. пробел в ключе лишний

Не в сети

#3 15.06.2017 08:36:11

Re: Не получается обновить форму через put method

На js всё можно сделать гораздо проще.

$('#editFilmForm').on('submit', function (e) {
        e.preventDefault();
        var url = '/films/' + $('[name="filmId"]').val(),
             data = $(this).serializeArray();

        $.post(url, data, function($response) {
              console.log(response);
        });
});

Изменено Sergant210 (15.06.2017 08:37:20)

Не в сети

#4 16.06.2017 14:39:56

Re: Не получается обновить форму через put method

constb пишет:

у тебя не $request['name'] а $request['name ']. пробел в ключе лишний

Спасибо! Правда вечером знакомый зашел, увидел пробел )

Не в сети

#5 16.06.2017 14:41:39

Re: Не получается обновить форму через put method

Sergant210 пишет:

На js всё можно сделать гораздо проще.

smile Благодарю, теперь можно будет уменьшить код

Не в сети

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