2016-02-21 5 views
3

Я использую Laravel 5 и попытаться обновить форму:Laravel 5 Метод не нашел исключение

{!! Form::model($user, ['route' => ['edit', $user->id], 'method' => 'PUT']) !!} 

{!! Form::label('titel', 'First Name:'!!} 
{!! Form::text('titel', null,) !!} 


<button type="submit">Update</button> 
{!! Form::close() !!} 

Мой маршрут:

Route::post('edit/{id}', ['as' => 'edit', 'uses' => '[email protected]']); 

Мой контроллер:

public function editUser($id){}; 

Если нажать на кнопка обновления Я получаю MethodNotAllowedHttpException в RouteCollection.php

Я проверил в исходном коде браузера и увидел, что форма :: модель (..), который я использую сгенерирую следующий вывод:

<form method="POST" action="http://localhost/myProject/public/edit/1" accept-charset="UTF-8"><input name="_method" type="hidden" value="PUT"><input name="_token" type="hidden" value="4nZlyfzzAZmTcZfThQ8gcR6cgEgYgR0ip0JZTKck"> 

внутри формы есть метод атрибута = «POST» и скрытая вход имеет значение атрибута = «PUT». Это кажется мне неправильным. Есть идеи? Спасибо

ответ

2

Вы должны использовать маршрут 'update', чтобы фактически сохранить данные (проверить и сохранить их в базе данных). 'edit' route - это то, что вы использовали для создания формы редактирования.

Вы должны использовать метод PUT для запуска метода, который сохраняет данные.

Кроме того, вот небольшой совет для вас. Узнайте, как работают контроллеры RESTful. Это действительно простой способ сделать то, что вы здесь делаете (defenetly стоит их изучить): https://laravel.com/docs/5.1/controllers

+0

Да, я видел ошибку. Спасибо – Steve

+0

Я рад, что смогу помочь.) –

2

Ваш маршрут не совпадает с вашей формой.

Laravel использует скрытые входы, чтобы указать различные методы http, как указано.

Итак, на ваших маршрутах вы должны использовать метод put, а не сообщение.

Route::put(); 
Смежные вопросы