【问题标题】:The GET method is not supported for this route. Supported methods: POST此路由不支持 GET 方法。支持的方法:POST
【发布时间】:2019-06-02 14:16:36
【问题描述】:

我正在关注 Laravel 的教程,但出现错误:

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

web.php的代码是这样的:

Route::get('/', function () {
    return view('welcome');
});

Auth::routes();

Route::get('/p/create', 'PostsController@create');
Route::post('/p', 'PostsController@store');

Route::get('/profile/{user}', 'ProfilesController@index')->name('profile.show');

create.blade.php 的代码是这样的:

<form action="/p" enctype="multipart/form-data" method="POST">
        @csrf
...

PostsController.php的代码

public function __construct(){
        $this->middleware('auth');
    }

    public function create(){
        return view('posts.create');
    }

    public function store(){
        $data = request()->validate([
            'caption' => 'required',
            'image' => ['required', 'image'],
        ]);

        auth()->user()->posts()->create($data);

        dd(request()->all());
    }

你有什么想法吗?

【问题讨论】:

  • 错误发生在哪一行?显然,您正试图从不支持它的页面GET。从你的代码判断是哪个,可能/p/create。
  • 我希望你在表单发布后没有在你的代码中做任何重定向。
  • 您很可能正试图从PostController 中的store 方法返回视图。但是您不能从 post 路由返回视图。
  • 在处理完表单后重定向到get 路由,并从该路由返回视图。
  • 我用 PostsController.php 的代码更新了帖子。 @Martin 我不知道错误发生在哪一行,我只有那个错误,没有更多解释。

标签: php laravel


【解决方案1】:

你试过action="&lt;form action="{{url('/p')}}" method="POST"&gt;

【讨论】:

    【解决方案2】:

    你能包括错误所在的行吗?

    我们假设你在你的帖子中得到了错误,所以你可以在下面试试这个;

    你可以这样命名你的路线;

    Route::post('/p', 'PostsController@store')->name('post.post');
    

    并像这样在您的路线构建器中使用它

    <form action="{{ route('post.post') }}" enctype="multipart/form-data" method="POST">
    

    【讨论】:

      【解决方案3】:

      对不起,这个错误是微不足道的...... 地址写错了……我写的是“localhost:8000/p”,而不是正确的地址“localhost:8000/p/create”。 感谢您的回答。

      【讨论】:

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