Я хочу создать функциональность edit_Item, но у меня возникли небольшие проблемы с маршрутизацией при отправке отредактированной формы. Я получаю эту ошибку:
InvalidArgumentException in UrlGenerator.php line 314:
Route [userItems] not defined.
Прежде всего, на моей странице редактирования у меня есть форма, которая передает 2 аргумента из таблицы элементов (item_id и user_id) в контроллер, и это выглядит так:
{!! Form::model($items, ['action' => ['ItemController@update', $items->id, $items->user_id], 'method' => 'PUT']) !!}
//Form inputs
{{ Form::close() }}
Мой контроллер обновлений выглядит так:
public function update($id, $user_id){
// validate
// read more on validation at http://laravel.com/docs/validation
$rules = array(
'title' => 'required',
'description' => 'required|description',
);
// store
$items = Item::find($id);
$items->title = Input::get('title');
$items->description = Input::get('description');
$items->save();
// redirect
Session::flash('message', 'Successfully updated item!');
return Redirect::route('userItems');
}
И мой маршрут с методом обновления выглядит так:
Route::put('/userItems/{id}/{user_id}', 'ItemController@update');
Теперь, когда я отправляю, я в настоящий момент получаю:
http://localhost:8000/userItems/26/3
И мне нужно попасть на:
http://localhost:8000/userItems/3
Есть идеи, как заставить item_id (26) исчезнуть с маршрута?
Вы могли бы использовать скрытый ввод
Определите скрытое поле (невидимое для пользователя).
Ваша форма
{!! Form::model($items, ['action' => ['ItemController@update', $items->user_id], 'method' => 'PUT']) !!}
<input type="hidden" name="item_id" value="{{$items->id}}">
//Form inputs
{{ Form::close() }}
Ваш маршрут
Route::put('/userItems/{user_id}', 'ItemController@update');
Ваш контроллер
public function update($user_id){
// validate
// read more on validation at http://laravel.com/docs/validation
$rules = array(
'title' => 'required',
'description' => 'required|description',
);
// store
$item_id = Request::input('item_id');
$items = Item::find($item_id);
$items->title = Input::get('title');
$items->description = Input::get('description');
$items->save();
// redirect
Session::flash('message', 'Successfully updated item!');
return Redirect::route('userItems');
}
Других решений пока нет …