У меня проблема при нажатии кнопки редактирования в edit.blade.php. В функции обновления метод PUT для этого маршрута не поддерживается. Поддерживаемые методы: POST.

< Сильный > web.php

<?php

Route::get('/', function () {
    return view('welcome');
});
Route::get('phones','PhonesController@index');
Route::post('store','PhonesController@store');
Route::delete('destroy/{id}','PhonesController@destroy');
Route::put('edit/{id}', 'PhonesController@edit');
Route::post('update/{id}','PhonesController@update');

Просмотр edit.blade.php

<div class="container">
    <div class="col-sm-offset-2 col-sm-8">
        <div class="panel panel-default">
            <div class="panel-heading">
                Edit {{$phone->name}}
            </div>

            <div class="panel-body">
                <!-- Display Validation Errors -->
                <!-- New Task Form -->
            <form action="{{url('update/'.$phone->id)}}" method="POST" class="form-horizontal">
                        @csrf     


                <div class="form-group">
                    <div class="col-sm-offset-3 col-sm-6">    
                        <button type="submit" class="btn btn-primary">
@method('put')
                            <i class="fa fa-edit"></i> Edit
                        </button>
                    </div>
                </div>
                </form>
            </div>
        </div> 

и контроллер

public function edit($id)
{
    $phone= Phone::find($id);

    return view('edit',compact('phone'));
}

public function update(Request $request,$id)
{
    $this->validate($request, [
        'name' => 'required|max:10',
        'model'=>'required'
    ]);

    $phone=new Phone();
    $phone->name=$request->input('name');
    $phone->model=$request->input('model');
    $phone->save();

    return back();
}

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

0
Mohammed Wadee 20 Дек 2019 в 21:53

1 ответ

Лучший ответ

Ваш маршрут редактирования не должен быть PUT, он должен быть GET. Затем вы должны изменить маршрут обновления на PUT, если вы хотите отправить его таким образом:

Route::get('edit/{id}', 'PhonesController@edit');
Route::put('update/{id}','PhonesController@update');

Тогда то, что отправляет вас на страницу редактирования, может быть просто обычной гиперссылкой (GET), которая также позволит вам перенаправить на нее.

0
lagbox 20 Дек 2019 в 19:17