2013-07-03 1 views
9

私はこのフレームワークについて何かを学ぶために、本当に簡単なCRUDをlaravelに作成しています。 それはすべての魅力のように動作しますが、コントローラの更新機能を適切に動作させることはできません。Laravel:フォームモデルバインドとリソースコントローラのエラー

ここに私の状況:

1)私は職人のコマンドを使用してリソースコントローラを構築します。

2)私はブレードを使用して、フォームビューを構築し、私はこのコードでフォームを開きます。

<!-- Form --> 
@if($mode=="edit") 
    {{ Form::model($task, array('route'=>array('task.update',$task->id),'files'=>true)) }} 
@else 
    {{ Form::open(array('route'=>'task.store','files'=>true)) }} 
@endif 

それは素晴らしい作品とすべてのフィールドが正しいデータで満たされています。 フォームのアクションの 生成するURLは次のとおりです。

http://localhost/mysite/task/2 

問題は、私は、このフォームを送信するとき、私はこのエラーを取得することです:

Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException 

誰かが理由を理解することができますか?より多くの情報をお手伝いできますか?

答えて

9

あなたは必要 'メソッド' => 'を置きます'。

{{ Form::model($task, array('route' => array('task.update', $task->id), 'files' => true, 'method' => 'PUT')) }}

あなたがここに見ることができるように。

http://laravel.com/docs/controllers#resource-controllers

Verb:  PUT/PATCH 
Path:  /resource/{id} 
action: update 
route: resource.update 

EDIT

:更新をトリガするには() - アクションあなたの場合 task.updateには、ルート resource.updateにPUTまたはPATCH要求を送信する必要があります。

0

フォームアクションに問題があります。あなたはこのようなルートを持っていると仮定すると:

Route::post('task/update/{id}, function() 
{ 

}); 

その後、モデル結合型は次のようになります。

{{ Form::model($task, array('url'=>array('task/update',$task->id),'files'=>true)) }} 
0

コードで唯一誤りがあったのは、サーバーへのフォーム送信のHTTPメソッドとしてPUTOR PATCHを渡さなかったことだけです。

Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpExceptionがこのような状態でトリガされます。

デモモデル形式は

Form::model($name_model, array('action' => array('[email protected]', $argument), 'files' => true, 'method' => 'PUT')) 

として、または

Form::model($name_model, array('route' => array('route.name', $argument), 'files' => true, 'method' => 'PUT')) 
としてルート名であろう
関連する問題