2013-07-03 30 views
9

Tôi đang xây dựng một CRUD thực sự đơn giản trong laravel chỉ để tìm hiểu điều gì đó về khuôn khổ này. Nó hoạt động giống như một nét duyên dáng nhưng tôi không thể làm cho chức năng cập nhật của bộ điều khiển hoạt động bình thường.Laravel: Hình thức ràng buộc mô hình và lỗi bộ điều khiển tài nguyên

đây tình hình của tôi:

1) tôi xây dựng một bộ điều khiển nguồn sử dụng lệnh thợ thủ công.

2) tôi xây dựng một cái nhìn hình thức sử dụng lưỡi và tôi Mở dạng với mã này:

<!-- 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 

Nó hoạt động tuyệt vời và mọi lĩnh vực được làm đầy với các dữ liệu đúng. generate url của hành động hình thức của là:

http://localhost/mysite/task/2 

Vấn đề là khi tôi nộp mẫu đơn này tôi nhận được lỗi này:

Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException 

Ai đó có thể hiểu tại sao? Tôi có thể giúp bạn với nhiều thông tin hơn không?

Trả lời

9

Bạn cần 'phương pháp' => 'đặt'.

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

Như bạn thấy ở đây.

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

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

EDIT: Để kích hoạt bản cập nhật() - hành động mà bạn phải gửi một PUT hoặc PATCH-yêu cầu đến đường resource.update, trong trường hợp của bạn task.update.

0

Bạn gặp sự cố với hành động biểu mẫu. Giả sử bạn có một con đường như thế này:

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

}); 

Sau đó, hình thức mô hình ràng buộc của bạn nên là:

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

Lỗi duy nhất trong mã của bạn là bạn đã không chuyển PUTOR PATCH làm phương thức HTTP để gửi biểu mẫu của bạn tới máy chủ.

Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException được kích hoạt trên các trạng thái như vậy.

một hình thức mô hình bản demo sẽ như

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

hoặc với tên tuyến đường như

Form::model($name_model, array('route' => array('route.name', $argument), 'files' => true, 'method' => 'PUT')) 
Các vấn đề liên quan