2013-07-03 2 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: Для того, чтобы вызвать обновление() - действие, которое вы должны отправить PUT или PATCH-запрос на маршрут resource.update, в вашем случае task.update.

0

У вас возникли проблемы с действием формы. Предполагая, что вы маршрут, как это:

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

}); 

Тогда ваша модель переплете форма должна быть:

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

Ошибка только в том, что вы не передали PUTOR PATCH как HTTP-метод для отправки формы на сервер.

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')) 
Смежные вопросы