簡體   English   中英

Laravel:表單模型綁定和資源控制器錯誤

[英]Laravel: Form model binding and resource controller error

我正在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

有人能理解為什么嗎? 我可以幫你提供更多信息嗎?

你需要'method'=>'put'。

{{ 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() - 操作,您必須在您的案例task.update向路由resource.update發送PUT或PATCH請求。

您的表單操作有問題。 假設您有這樣的路線:

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

});

然后,您的模型綁定表單應為:

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

您的代碼中唯一的錯誤是您沒有將PUTor PATCH作為HTTP方法傳遞給服務器。

在這些狀態上觸發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'))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM