此路由不支持 GET 方法。支持的方法:POST。在插入/存储

Posted

技术标签:

【中文标题】此路由不支持 GET 方法。支持的方法:POST。在插入/存储【英文标题】:The GET method is not supported for this route. Supported methods: POST. on insert / store 【发布时间】:2020-04-06 04:11:05 【问题描述】:

我的插入(存储)页面不断出现此错误。它说

此路由不支持 GET 方法。支持的方法:POST。

当我转到/category/admin/insert时会发生这种情况

我已经尝试命名我的路线,但没有解决任何问题。

这是我的路线:

Route::prefix('category')->group(function () 
    Route::post('admin/manage', 'CategoryController@destroy');
    Route::get('admin/manage', 'CategoryController@index');
    Route::post('admin/insert', 'CategoryController@store');
    Route::get('admin/edit/id', 'CategoryController@edit');
    Route::post('admin/update', 'CategoryController@update');
);

这是我的看法 (.blade.php)

<div class="card-body">
  <form action=" url('category/admin/insert') " method="POST" enctype="multipart/form-data">
    csrf_field()
    <div class="form-group">
      <input type="text" name="category_name" class="form-control" value="" placeholder="Category Name">
    </div>
    <button class="form-control btn btn-primary">Insert</button>
    @if($errors->any())
      <div class="alert alert-danger mt-3">
        <ul>
          @foreach($errors->all() as $e)
            <li>$e</li>
          @endforeach
        </ul>
      </div>
    @endif
    @if(Session::get('success'))
      <div class="alert alert-success mt-3">
        <strong>Session::get('success')</strong>
      </div>
    @endif
  </form>
</div>

这是我的Controller

public function store(Request $request)

    $request->validate([
        'category_name' => 'required|min:5'
    ]);

    $categories = new Category();
    $categories->name = $request->get('category_name');
    $categories->save();

    return redirect('/category/admin/manage')->with('success', 'Success Insert');

【问题讨论】:

您是否设置了任何重定向,例如 HTTP -> HTTPS?重定向仅使用 GET,因此任何 POST 请求都将更改为 GET。 如果您在提交之前在category_name 输入中输入12345(或至少包含5 个字符的内容),您是否会遇到此问题?您的验证可能失败,我很确定这会导致重定向。编辑:“当我去/category/admin/insert时会发生这种情况” - 不要走那条路;您没有为它定义 GET 路由。 在控制器函数中验证请求之前尝试dd($request) 我只是去 127.0.0.1:8000/category/admin/insert 并且它总是会发生 127.0.0.1:8000/category/admin/insert 放入浏览器使用GET 请求。这行不通。它只能通过 POST 请求访问。 【参考方案1】:

找到了解决办法。不知道它是否正确xD,但它有效..

我做其他控制器:

public function create()

    $categories = Category::all();
    return view('category.insert_category')->with('categories', $categories);

并添加这条路线:

Route::get('admin/insert', 'CategoryController@create');

【讨论】:

以上是关于此路由不支持 GET 方法。支持的方法:POST。在插入/存储的主要内容,如果未能解决你的问题,请参考以下文章

错误:此路由不支持 POST 方法。支持的方法:GET、HEAD。 - 使用 laravel livewire

此路由不支持 GET 方法。支持的方法:POST。拉拉维尔 8

此路由不支持 POST 方法。支持的方法:GET、HEAD。",...

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

laravel向我显示此错误此路由不支持POST方法。支持的方法:GET,HEAD,PUT,DELETE

此路由不支持 GET 方法。支持的方法:POST。 laravel 5.8 阿贾克斯