Laravel:此路由不支持 POST 方法

我对 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,就是这样:

https://img1.sycdn.imooc.com/652b920e0001acca12280284.jpg

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



精慕HU
浏览 103回答 3
3回答

慕丝7291255

您正在向服务器发送请求,因此需要将 HTTP 请求设置为 post 而不是 get,如下所示Route::post('/p','PostsController@store');

慕村9548890

在 create.blade.php 表单方法中是,POST但在 web.php 中是&nbsp;Route::get('/p','PostsController@store');,所以你应该更改&nbsp;Route::post('/p','PostsController@store')而不是&nbsp;Route::get('/p','PostsController@store')在控制器中use Illuminate\Http\Request;class PostsController extends Controller{&nbsp; &nbsp; public function create()&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; return view('posts.create');&nbsp; &nbsp; }&nbsp; &nbsp; public function store(Request $request)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; dd($request->input('image'));&nbsp; &nbsp; }}

交互式爱情

您需要添加一条POST路线Route::post('/p','PostsController@store');
打开App,查看更多内容
随时随地看视频慕课网APP