Как обновить в Laravel - PullRequest
       2

Как обновить в Laravel

0 голосов
/ 19 октября 2018

У меня возникла проблема с реализацией обновления в моем приложении Laravel.В моем блейд-файле у меня есть модал, где я показываю поля в.Каждая строка как кнопка, которая открывает другой модал, где все поля должны быть обновлены.Итак, это блейд-файл:

<form action="{{ action('AnamController@update', $par->id_par) }}" method="put" class="form-horizontal">
    {{csrf_field()}}
    <input name="input_name" value="Par" hidden />

    <div class="col-lg-12">
        <div class="form-group">
            <label class="control-label col-lg-4">Name:</label>
            <div class="col-lg-6">
                <input id="name" name="name" type="text" class="form-control" value="{{$par->name}}"/>
            </div>
        </div>
    </div>
    <!--other things-->
</form>

Но это возвращает мне ошибку.«Свойство [id_par] не существует в этом экземпляре коллекции», и если я вставляю оператор foreach, когда нажимаю кнопку «Редактировать», чтобы открыть модальный режим, я всегда вижу первое поле, присутствующее в БД.Так что я должен сделать?

Спасибо

РЕДАКТИРОВАТЬ Это маршрут:

Route::post('/anam/{id}, AnamController@update')->name('anam');

РЕДАКТИРОВАТЬ 2 Iпопробуйте реализовать функцию обновления, чтобы увидеть, работает ли обновление.Но у меня есть ошибка MethodNotAllowedHttpException

Это то, что я написал:

   public function update(Request $request, $id){

    $par = Par::find($id);
    $par->name = $request->input('name');
    $par->save();

    return redirect('/anam');
}

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Ваш маршрут должен быть таким:

Route::put('/anam/{id}, AnamController@update')->name('anam');

не

Route::post('/anam/{id}, AnamController@update')->name('anam');

И в вашей форме используйте это

<form action="{{ action('AnamController@update', $par->id_par) }}" method="POST" class="form-horizontal">
{{csrf_field()}}
{{ method_field('PUT') }}

РЕДАКТИРОВАТЬ:

У вас может быть проблема с именем вашего первичного ключа:

является ли ваш первичный ключ Par Модель id_par?

проверьте в консоли, что запрос находится на правильном идентификаторе (например: / aname / 10)

, затем попробуйте добавить dd($id); в свой контроллер, чтобы увидеть, есть ли у вас идентификаторявляется правильным.

PS: Вы должны попробовать контроллер ресурсов с автоматическим связыванием модели

https://laravel.com/docs/5.7/routing#implicit-binding

0 голосов
/ 19 октября 2018

Прежде всего для обновления вам нужно изменить метод элемента form на post, а затем добавить директиву blade @method('put') для более новых версий Laravel или {{ method_field('PUT') }} для более старых в форме.

Пожалуйста, поделитесь еще кодом, а не только представлением, чтобы мы могли видеть причину ошибки, которую вы получаете.

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