laravel:8 此路由不支持 PUT 方法。支持的方法:GET、HEAD

时间:2021-02-22 16:36:17

标签: laravel laravel-8

当我尝试编辑表单时,它会出现此错误:此路由不支持 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);
}

2 个答案:

答案 0 :(得分:1)

您的路线都不是 Route::put(),您只有 Route::get()Route::post()

如果您尝试将 PUT 用于 update 方法,您需要像这样声明您的路线:

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

答案 1 :(得分:0)

如果你没有在路由中使用资源,那么使用这些路由:

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) {
}
?>