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

когда я пытаюсь отредактировать форму, появляется следующая ошибка: метод PUT не поддерживается для этого маршрута. Поддерживаемые методы: GET, HEAD. а мои маршруты:

Маршруты:

  Route::get('/articles', 'ArticlesController@index');
  Route::post('/articles', 'ArticlesController@store');
  Route::get('/articles/create', 'ArticlesController@create');
  Route::get('/articles/{article}', 'ArticlesController@show');
  Route::get('/articles/{article}/edit', 'ArticlesController@edit');
  Route::get('/articles/{article}', 'ArticlesController@update');

Список маршрутов:


--------+----------+-------------------------+------+------------------------------------------------+------------+
| Domain | Method   | URI                     | Name | Action                                         | Middleware |
+--------+----------+-------------------------+------+------------------------------------------------+------------+
|        | GET|HEAD | /                       |      | Closure                                        | web        |
|        | GET|HEAD | about                   |      | Closure                                        | web        |
|        | GET|HEAD | api/user                |      | Closure                                        | api        |
|        |          |                         |      |                                                | auth:api   |
|        | GET|HEAD | articles                |      | App\Http\Controllers\ArticlesController@index  | web        |
|        | POST     | articles                |      | App\Http\Controllers\ArticlesController@store  | web        |
|        | GET|HEAD | articles/create         |      | App\Http\Controllers\ArticlesController@create | web        |
|        | GET|HEAD | articles/{article}      |      | App\Http\Controllers\ArticlesController@update | web        |
|        | GET|HEAD | articles/{article}/edit |      | App\Http\Controllers\ArticlesController@edit   | web        |
+--------+----------+-------------------------+------+------------------------------------------------+------------+

контроллер:

public function update($id)
{
        $article = Article::find($id);

        $article->title = request('title');
        $article->excerpt = request('excerpt');
        $article->body = request('body');
        $article->save();

        return redirect('/articles/'. $article->id);
}

person pro programmer    schedule 22.02.2021    source источник
comment
Route :: put () в route / web.php?   -  person Beller    schedule 22.02.2021


Ответы (2)


Ни один из ваших маршрутов не является Route::put(), у вас есть только Route::get() и Route::post().

Если вы пытаетесь использовать PUT для метода update, вам нужно объявить свой маршрут следующим образом:

Route::put('/articles/{article}', 'ArticlesController@update');
person Maxime    schedule 22.02.2021

Если вы не использовали ресурсы в своих маршрутах, используйте эти маршруты:

web.php

Route::get('/articles', 'articles\ArticlesController@index');
Route::get('/articles/create', 'articles\ArticlesController@create');
Route::post('/articles/create', 'articles\ArticlesController@store');
Route::get('/articles/{article}', 'articles\ArticlesController@show');
Route::get('/articles/{article}/edit', 'articles\ArticlesController@edit');
Route::get('/articles/{article}/edit', 'articles\ArticlesController@update');

приложение / HTTP / контроллеры:

<?php
namespace App\Http\Controllers\articles;

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

//---Constructor Function
public function __construct() {
    $this->middleware('auth:sanctum');
}//---End of Function Constructor

public function index() {
}

public function create() {
}

public function store(ArticleRequest $request) {
}

public function show($article) {
}

public function edit($article) {
}

public function update(ArticleRequest $request, $article) {
}
?>
person Hedayatullah Sarwary    schedule 09.03.2021