2017-01-08 27 views
0

私はLaravelを初めて使用するようになりました。3時間前に初めて、私は人々がレストランについていくつかの良いことを書くことができる基本的な黄金の本を作成しようとしています。MethodNotAllowedHttpException on submit

私はphp artisan make:controller GoldenbookController --resourceというコマンドでコントローラを作成し、php artisan make:model Goldenbook -mというコマンドで私のモデルを作成しました。移行では、移行する前に単に「名前」と「メッセージ」を追加しました。

MethodNotAllowedHttpException in RouteCollection.php line 218 

私はこの問題を持つ多くの人々を見ましたが、道:私はまた、私はそれを試してみましたが、次のエラーを得た、ビューやフォームを作成した後routes/web.phpファイル

resourceを追加しましたそれを解決するために私はRoute::resourceを使って私のCRUDをLaravelに伝えるので、私の場合とは一致しません。ここで

Route::resource('goldenbook', 'GoldenbookController'); 
web.php私 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とあなたのform両方内のルートに問題があり、事前に

+0

Route :: resource( 'livre-dor'、 'GoldenbookController'); 'Route :: resource( 'goldenbook'、 'GoldenbookController'); ' – IzzEps

+0

これはタイプミスです。ここでもう少し助けを求めてきましたが、ゴールデンブックの 'livre-dor'を変更しても何も変わっていませんでした – Jaeger

+0

別のもの: '{!!Form :: open(['url' => 'goldenbook/create'])!!} 'ちょうど' {!! Form :: open(['url' => 'goldenbook'])!!} 'ルートコントローラは自動的にそのリソースへのPOSTの' store'関数を呼び出します。 (https://laravel.com/docs/5.3/controllers) – IzzEps

答えて

0

、ありがとうございました。

あなたweb.phpは言葉goldenbook

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

を持つ必要がありますそして、あなたのフォームはgoldenbook/storeまたはgoldenbook

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

としてルートを持っている必要がありますまたはあなたがあまりにもルートの名前を渡すことができます。

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

これは問題を解決するはずです。

あなたのルートの名前を知りたいとLaravel 5.*を使用している場合、あなたはあなたのURLがルートに一致するかどうかをチェックするために

php artisan route:list 

を使用することができます。

goldenbook/createルートがGET要求だけを受け入れるので、POSTメソッドを使用する間違ったルートを使用しています。これはあなたの問題を解決するはずです。