Метод GET не поддерживается для этого маршрута. Поддерживаемые методы: PUT и DELETE при выполнении обновления и удаления

Код в web.php

Route::group(['middleware'=>['auth','admin']], function(){
    Route::put('/role-register-update/{id}', 'Admin\DashboardController@registerupdate');
    Route::delete('/role-delete/{id}', 'Admin\DashboardController@registerdelete');
});

Код в DashboardController

namespace App\Http\Controllers\Admin;

use App\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class DashboardController extends Controller
{

    public function registerupdate(Request $request, $id){
        $user = User::find($id);
        $user->name = $request->input('name');
        $user->phone = $request->input('phone');
        $user->email = $request->input('email');
        $user->userType = $request->input('userType');
        $user->update();
        return \redirect('/user_profile')->with('success', 'Your Data Is Updated');
    }

    public function registerdelete($id){
        $user = User::findOrfail($id);
        $user->delete();
        return \redirect('/user_profile')->with('success', 'Your Data Is Deleted');
    }
}

Код формы редактирования

<form action="/role-register-update/{{ $user->id }}" method="POST">
                            {{ @csrf_field() }} {{ @method_field('PUT') }}
                            <div class="form-group">
                                <label for="name">Name</label>
                                <input type="text" class="form-control" name="name" id="name" placeholder="Full Name" value="{{ $user->name }}">
                            </div>
                            <div class="form-group">
                                <label for="phone">Phone</label>
                                <input type="number" class="form-control" name="phone" id="phone" placeholder="Phone Number" value="{{ $user->phone }}">
                            </div>
                            <div class="form-group">
                                <label for="email">Email</label>
                                <input type="email" class="form-control" name="email" id="email" aria-describedby="emailHelp" placeholder="Email Id" value="{{ $user->email }}">
                            </div>
                            <div class="form-group">
                                <label for="role">Role</label>
                                <select name="userType" class="form-control" id="userType">
                                    <option value="">--- Select ---</option>
                                    <option value="admin">Admin</option>
                                    <option value="user">Internal User</option>
                                </select>
                            </div>
                            <div class="form-group">
                                <div class="row">
                                    <div class="col-md-6">
                                        <button type="button" class="btn btn-outline-success">Submit</button>
                                    </div>
                                    <div class="col-md-6">
                                        <a href='../user_profile' class="btn btn-outline-warning">Cancel</a>
                                    </div>
                                </div>
                            </div>
                        </form>

код удаления данных формы

<form method="POST" action="/role-delete/{{ $user->id }}">
                                        {{ csrf_field() }} {{ method_field('DELETE') }}
                                        <button type="button" class="btn btn-outline-danger">Danger</button>
                                    </form>

Операция обновления и удаления не выполняется на локальном хосте В Laravel 5.8. Он выдает ошибку для обновления: метод GET не поддерживается для этого маршрута. Поддерживаемые методы: PUT.

& та же ошибка для удаления. Метод GET не поддерживается для этого маршрута. Поддерживаемые методы: УДАЛИТЬ.

Я не получаю решения, пожалуйста, помогите


person Web Developer    schedule 29.04.2020    source источник
comment
Вместо этого установите type="submit".   -  person Tpojka    schedule 29.04.2020
comment
Спасибо :) Теперь он работает правильно, как обновление, так и удаление.   -  person Web Developer    schedule 29.04.2020
comment
Хороший. Вы можете принять и проголосовать за ответ, который я оставил там. Я также упомянул еще одну вещь из вашего кода.   -  person Tpojka    schedule 29.04.2020


Ответы (1)


Для правильной работы формы ваша кнопка должна иметь тип submit.

Т.е. в форме для обновления

<button type="submit" class="btn btn-outline-success">Submit</button>

или в форме для удаления:

<button type="submit" class="btn btn-outline-danger">Danger</button>

Боковое примечание, ваша ссылка для отмены имеет атрибут ../user_profile href. Вам следует подумать о том, чтобы не использовать такие перемещаемые строки местоположения, и вы избежите большого количества лаваша позже. Insted, лучший способ - использовать имя маршрута, предоставленное фреймворком или просто путь относительно корня URL-адреса, но с ведущей косой чертой

Например:

<a href='/user_profile' class="btn btn-outline-warning">Cancel</a>

Но опять же, лучший способ и правильный способ с точки зрения программирования и с точки зрения обслуживания - использовать именованные маршруты.

 <a href='{{ route('route.name.set.in.routes.web.file') }}' class="btn btn-outline-warning">Cancel</a>
person Tpojka    schedule 29.04.2020