2017-01-16 3 views
0

Моя форма в режиме редактирования:Laravel: метод обновления в контроллере не работает

<form class="form-horizontal" role="form" method="PUT" action="{{ route('locations.update', $location->id) }}"> 
         {{ csrf_field() }} 
// All form Fields ... 
</form> 

Мои маршрутов для этого случая:

| GET|HEAD | locations/create   | locations.create | App\Http\Controllers\[email protected] 
| PUT|PATCH | locations/{location}  | locations.update | App\Http\Controllers\[email protected] 
| GET|HEAD | locations/{location}  | locations.show | App\Http\Controllers\[email protected] 
| DELETE | locations/{location}  | locations.destroy | App\Http\Controllers\[email protected] 

Мой метод обновления в контроллере местоположений

/** 
* Update the specified resource in storage. 
* 
* @param \Illuminate\Http\Request $request 
* @param int $id 
* @return \Illuminate\Http\Response 
*/ 
public function update(Request $request, $id) 
{ 
    // 
    dd($request); 

} 

Результат по форме отправки enter image description here dd ($ request); результат не появляется.

Любые подсказки для меня, что я делаю неправильно здесь?

Большое спасибо!

ответ

3

Веб-браузеры не поддерживают PUT маршруты, только GET и POST. Чтобы решить эту проблему, вы можете использовать Form Method Spoofing Добавив в форму скрытое поле. Например:

<form class="form-horizontal" role="form" method="post" action="{{ route('locations.update', $location->id) }}"> 
    {{ csrf_field() }} 
    <input type="hidden" name="_method" value="PUT"> 

    // All form Fields ... 
</form> 
Смежные вопросы