【问题标题】:The GET method is not supported for this route. Supported methods: POST. on insert / store此路由不支持 GET 方法。支持的方法:POST。在插入/存储
【发布时间】: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 请求访问。

标签: php laravel post routes


【解决方案1】:

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

我做其他控制器:

public function create()
{
    $categories = Category::all();
    return view('category.insert_category')->with('categories', $categories);
}

并添加这条路线:

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

【讨论】:

    猜你喜欢
    • 2020-09-04
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    • 2021-04-11
    • 2019-08-31
    • 2021-05-05
    • 1970-01-01
    相关资源
    最近更新 更多