提交

时间:2017-01-08 01:54:46

标签: php forms exception laravel-5

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

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

中添加了routes/web.php

创建视图和表单后,我尝试了它并收到以下错误:

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');

有什么想法吗?

提前谢谢

1 个答案:

答案 0 :(得分:0)

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

检查您的网址是否与路线匹配。

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