Метод POST не поддерживается для этого маршрута

Во-первых, я проверил другую тему вопроса, но не смог найти решение.

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

The POST method is not supported for this route. Supported methods: 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());

}

поскольку вы не используете ресурсный маршрут, поэтому вы должны удалить это {{ method_field('PUT') }} из своей формы.

Salman Zafar 31.05.2019 09:49

Что касается соглашений REST, глагол put http должен использоваться при обновлении ресурса.

Leonardo Rossi 31.05.2019 09:51

@parabellum ты пытаешься обновить существующий ресурс?

Aditya Thakur 31.05.2019 10:07

@parabellum я обновил свой awnser

Lakhwinder Singh 31.05.2019 10:08

@AdityaThakur Я пытаюсь обновить таблицу профилей в БД

user10828115 31.05.2019 10:13

@parabellum проверь мой ответ

Aditya Thakur 31.05.2019 10:14
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
1
6
127
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

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

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

к этому

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

спасибо, но если бы это было так просто решить, я бы не задавал вопрос :) никакого эффекта...

user10828115 31.05.2019 09:52

хорошо, проверьте мой другой ответ, это проще :)

Leonardo Rossi 31.05.2019 10:31

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

В форме 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());
}

вы удалили method_field('PUT') из формы. это будет работать, только если вы добавите метод

Lakhwinder Singh 31.05.2019 09:56

обновил вопрос с ошибкой POST не ставится и коды тоже

user10828115 31.05.2019 10:01

Я поместил ввод скрытым внизу формы и попытался с этим, но все равно с той же ошибкой.

user10828115 31.05.2019 10:13

@parabellum проверь сейчас. Я обновил ваш код с исправлениями.

Lakhwinder Singh 31.05.2019 10:23
Ответ принят как подходящий

Из вашего вопроса я могу понять, что вы пытаетесь обновить профиль, используя метод 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
}

Я пробовал, но он говорит следующее: Undefined variable: id (View: /var/www/realestate/resources/views/profiles/edit.blade.php) также я добавил в контроллер вопросов внизу

user10828115 31.05.2019 10:20

@parabellum Это потому, что $id я ввел просто фиктивный идентификатор, вам нужно будет передать идентификатор профиля, который вы редактируете, вы правильно получаете данные профиля в своем представлении, в вашем случае идентификатор должен быть чем-то вроде $info->id,

Aditya Thakur 31.05.2019 10:22

о, извините, это была моя ошибка, я ее исправил. но он все еще дает ошибку этого метода

user10828115 31.05.2019 10:24

можете ли вы прокомментировать метод с помощью route::get("/profile/{slug}"), а затем проверить

Aditya Thakur 31.05.2019 10:25

почему, если я закомментирую этот маршрут, я не могу получить доступ к странице?

user10828115 31.05.2019 10:27

не беспокойтесь об этом, это для отладки

Aditya Thakur 31.05.2019 10:28

@parabellum также замените @put на @method('put')

Aditya Thakur 31.05.2019 10:31

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

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

должно быть

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

вау, большой синтаксис.. хорошо, он не работает.. ошибка The POST method is not supported for this route. Supported methods: PUT.

user10828115 31.05.2019 10:34

@parabellum поменяй @put на @method('put'), мой плохой

Aditya Thakur 31.05.2019 10:35

@AdityaThakur да, это изменение решило проблему. Спасибо.

user10828115 31.05.2019 10:36

Другие вопросы по теме