Метод POST не поддерживается для этого маршрута - PullRequest
2 голосов
/ 31 мая 2019

Сначала я проверил другую тему вопроса, но не смог найти решение.

, когда я пытаюсь опубликовать свою форму.Я получаю эту ошибку.

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

Форма:

<div class="card-body">
    <form action="{{route('profile.update', ['id' => $id])}}" method="post">
      @csrf
      @put

        <div class="form-group">
            <label for="location">Location</label>
            <input class="form-control" type="text" name="location" value="{{$info->location}}">
        </div>
        <div class="form-group">
            <label for="about">About</label>
            <textarea name="about" id="about" rows="10" cols="50" class="form-control">{{$info->about}}</textarea>
        </div>
        <div class="form-control">
            <p class="text-center">
                <button class="btn btn-primary btn-md" type="submit">Update Your Info</button>
            </p>
        </div>
    </form>
</div>

Маршруты:

Route::group(["middleware" => "auth"], function(){
    route::get("/profile/edit", [
        "uses" => "ProfilesController@edit",
        "as" => "profile.edit"
    ]);
    route::get("/profile/{slug}", [
        "uses" => "ProfilesController@index",
        "as" => "profile"
    ]);
    route::put("/profile/update/{id}", [
        "uses" => "ProfilesController@update",
        "as" => "profile.update"
    ]);
});

в контроллере:

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

    dd($request->all());

}

Ответы [ 4 ]

3 голосов
/ 31 мая 2019

Вот исправление в вашем примере.

В форме route('profile.update', ['id' => {here you have to place id of record which you want to update}]).

Просмотр файла $ info-> id])}} "method =" post ">

        <div class="form-group">
            <label for="location">Location</label>
            <input class="form-control" type="text" name="location" value="{{$info->location}}">
        </div>
        <div class="form-group">
            <label for="about">About</label>
            <textarea name="about" id="about" rows="10" cols="50" class="form-control">{{$info->about}}</textarea>
        </div>
        <div class="form-control">
            <p class="text-center">
                <button class="btn btn-primary btn-md" type="submit">Update Your Info</button>
            </p>
        </div>
    </form>
</div>

В пути

Route::group(["middleware" => "auth"], function(){
    route::get("/profile/{slug}", [
        "uses" => "ProfilesController@index",
        "as" => "profile"
    ]);
    route::get("/profile/edit/profile", [
        "uses" => "ProfilesController@edit",
        "as" => "profile.edit"
    ]);
    route::post("/profile/update/profile/{id}", [
        "uses" => "ProfilesController@update",
        "as" => "profile.update"
    ]);
});

В контроллере

public function update(Request $request, $id)
{
    dd($id, $request->all());
}
1 голос
/ 31 мая 2019

У вас есть ошибка в определении формы

 <form class="{{route('profile.update', ['id' => $id])}}" method="post">

должно быть

 <form action="{{route('profile.update', ['id' => $id])}}" method="post">
1 голос
/ 31 мая 2019

Исходя из вашего вопроса, я могу понять, что вы пытаетесь обновить профиль, используя метод POST или, возможно, метод PUT ранее. Поскольку ресурс, который вы редактируете, является уникальным, вы не передаете контроллеру никаких параметров, чтобы найти этот единственный ресурс для его обновления.

поэтому измените свой маршрут как

 route::put("/profile/update/{id}", [
        "uses" => "ProfilesController@update",
        "as" => "profile.update"
    ]);

А твоя форма как

<form action="{{route('profile.update', ['id' => $id])}}" method="post">
@csrf
@method('put')

Вам нужно будет передать идентификатор профиля, который вы хотите обновить, в качестве параметра

затем на контроллере

public function update(Request $request, $id){
 //edit the profile with id = $id
}
0 голосов
/ 31 мая 2019

Поскольку вы создали форму для запроса PUT, вам нужно изменить

route::post("/profile/update/profile", [
    "uses" => "ProfilesController@update",
    "as" => "profile.update"
]);

к этому

route::put("/profile/update/profile", [
    "uses" => "ProfilesController@update",
    "as" => "profile.update"
]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...