【问题标题】:Laravel: The POST method is not supported for this routeLaravel:此路由不支持 POST 方法
【发布时间】:2020-12-05 02:13:17
【问题描述】:

我是 Laravel 的新手,我为我的页面制作了一个表单,用户可以添加新图像,这个表单位于 create.blade.php:

<form action="/p" enctype="multipart/form-data" method="post">
@csrf
<div class="row">
    <div class="col-8 offset-2">
        <div class="row">
            <h1>Add New Post</h1>
        </div>
        <div class="form-group row">
            <label for="caption" class="col-md-4 col-form-label">Post Caption</label>

              
            <input id="caption" 
                type="text" 
                class="form-control @error('caption') is-invalid @enderror" 
                name="caption" 
                value="{{ old('caption') }}" 
                autocomplete="caption" autofocus>

                @error('caption')
                    <span class="invalid-feedback" role="alert">
                        <strong>{{ $message }}</strong>
                    </span>
                @enderror
             
        </div>
        <div class="row">
            <label for="image" class="col-md-4 col-form-label">Post Image</label> 
            <input type="file" class="form-control-file" id="image" name="image">
            @error('image')
                <span class="invalid-feedback" role="alert">
                    <strong>{{ $message }}</strong>
                </span>
            @enderror
        </div>
        <div class="row pt-4">
            <button class="btn btn-primary">Add New Post</button>
        </div>
    </div>
</div>

这是web.php(路由)文件:

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

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

如您所见,它指的是PostController.php,即:

class PostsController extends Controller
{
    public function create()
    {
        return view('posts.create');
    }
    public function store()
    {
        dd(request()->all());
    }
}

我也执行命令php artisan route:list,就是这样:

那么这里出了什么问题?我搜索了很多,但找不到任何有用的东西。所以如果你知道如何解决这个问题,请告诉我。

提前致谢

【问题讨论】:

  • 只需更改您的路线 - Route::post('/p','PostsController@store');

标签: php laravel post


【解决方案1】:

你需要添加一个POST路由

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

【讨论】:

    【解决方案2】:

    您正在向服务器发送请求,因此您需要将 HTTP 请求设置为 post not get, 像这样

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

    【讨论】:

      【解决方案3】:
      1. 在 create.blade.php 表单方法中是 POST 但在 web.php 中是 Route::get('/p','PostsController@store'); 所以你应该改变 Route::post('/p','PostsController@store') 而不是 Route::get('/p','PostsController@store')

      2. 在控制器中

        use Illuminate\Http\Request;
        class PostsController extends Controller
        {
            public function create()
            {
                return view('posts.create');
            }
            public function store(Request $request)
            {
                dd($request->input('image'));
            }
        }
        

      【讨论】:

        猜你喜欢
        • 2021-03-09
        • 1970-01-01
        • 2021-04-11
        • 2021-08-05
        • 2020-06-05
        • 2020-03-21
        • 2021-01-10
        • 2020-04-19
        • 1970-01-01
        相关资源
        最近更新 更多