【问题标题】:MethodNotAllowedHttpException on submit提交时出现 MethodNotAllowedHttpException
【发布时间】:2017-01-08 01:54:45
【问题描述】:

我在 3 小时前第一次开始使用 Laravel,我正在尝试创建一本基本的黄金书,人们可以在其中写一些关于餐厅的好东西。

所以我使用命令php artisan make:controller GoldenbookController --resource 创建了我的控制器,然后使用命令php artisan make:model Goldenbook -m 创建了我的模型。在迁移中,我只是在迁移之前添加了“名称”和“消息”。我还在routes/web.php 文件中添加了resource

创建视图和表单后,我试了一下,报错:

MethodNotAllowedHttpException in RouteCollection.php line 218

我看到很多人遇到这个问题,但是解决它的方法与我的情况不符,因为我使用 Route::resource 告诉 Laravel 我的 CRUD。

这是我的 GoldenBookController.php

 /**
 * Show the form for creating a new resource.
 *
 * @return \Illuminate\Http\Response
 */
public function create()
{
    return view('goldenbook.create');

}

/**
 * Store a newly created resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function store(Request $request)
{
    $validator = Validator::make($request->all(), [
        'nom' => 'required',
        'message' => 'required'
    ]);


    if($validator->fails()){
        return redirect('/')
            ->withInput()
            ->withErrors($validator);
    }

    $goldenbook = new Goldenbook;
    $goldenbook->nom = $request->name;
    $goldenbook->message = $request->message;
    $goldenbook->save();

    return redirect()->back();
}

这是我的表格

{!! Form::open(['url' => 'goldenbook/create']) !!}

<div class="form-group">
    {{ Form::label('name', 'Name') }}
    {{ Form::text('name', null, ['class' => 'form-control']) }}
</div>

<div class="form-group">
    {{ Form::label('message', 'Message') }}
    {{ Form::textarea('message', null, ['class' => 'form-control']) }}
</div>

{{ Form::submit('Save', null,['class' => 'btn btn-primary']) }}

{!! Form::close() !!}

这是我的路由文件,web.php

Route::resource('goldenbook', 'GoldenbookController');

有什么想法吗?

提前谢谢你

【问题讨论】:

  • Route::resource('livre-dor', 'GoldenbookController'); 应该是Route::resource('goldenbook', 'GoldenbookController');
  • 这是一个错字,我尝试了几件事,然后在这里寻求更多帮助,但为 Goldenbook 更改 'livre-dor' 并没有改变任何东西
  • 我明白了。另一件事:{!! Form::open(['url' =&gt; 'goldenbook/create']) !!} 应该只是 {!! Form::open(['url' =&gt; 'goldenbook']) !!} ,因为路由控制器会自动调用 store 函数来对该资源进行 POST。 (laravel.com/docs/5.3/controllers)

标签: php forms exception laravel-5


【解决方案1】:

web.phpform 中的路由都有问题。

你的web.php应该有goldenbook这个词

Route::resource('goldenbook', 'GoldenbookController');

你的表单应该有goldenbook/storegoldenbook的路由

{!! Form::open(['url' => 'goldenbook/store']) !!} 

或者你也可以传递路线的名称。

{!! Form::open(['url' => 'goldenbook.store']) !!}]

这应该可以解决您的问题。

如果您想知道您的路线名称并使用Laravel 5.*,您可以使用

 php artisan route:list

检查你的 url 是否与路由匹配。

您使用POST 方法的路线错误,因为您的goldenbook/create 路线只接受GET 请求。这应该可以解决您的问题。

【讨论】:

    猜你喜欢
    • 2018-10-22
    • 1970-01-01
    • 2017-03-28
    • 2018-08-27
    • 1970-01-01
    • 1970-01-01
    • 2018-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多