9

このフレームワークについて何かを学ぶためだけに、laravel で非常に単純な CRUD を構築しています。それはすべて魔法のように機能しますが、コントローラーの更新機能を適切に機能させることができません。

ここで私の状況:

1) artisan コマンドを使用してリソース コントローラーを作成します。

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

誰かが理由を理解できますか?詳しい情報を教えていただけますか?

4

3 に答える 3

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

編集: update() アクションをトリガーするには、ルートに PUT または PATCH リクエストを送信する必要がありresource.updateますtask.update

于 2013-07-03T11:00:39.930 に答える
0

フォーム アクションに問題があります。次のようなルートがあるとします。

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

});

次に、モデルにバインドされたフォームは次のようになります。

{{ Form::model($task, array('url'=>array('task/update',$task->id),'files'=>true)) }}
于 2013-07-03T11:00:16.353 に答える
0

コード内の唯一のエラーは、サーバーへのフォーム送信の HTTP メソッドとして PUTor PATCH を渡していないことです。

Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException は、そのような状態でトリガーされます。

デモモデルフォームは次のようになります

 Form::model($name_model, array('action' => array('Controller_name@method', $argument), 'files' => true, 'method' => 'PUT'))

またはルート名を

Form::model($name_model, array('route' => array('route.name', $argument), 'files' => true, 'method' => 'PUT'))
于 2014-01-22T19:32:48.153 に答える