如何在路由中传递 2 个参数,但将一个隐藏在 Laravel 中?
How to pass 2 parameters in a route, but make one hidden in Laravel?
我想创建一个 edit_Item 功能,但在提交编辑后的表单时我在路由方面遇到了一些麻烦。我收到此错误:
InvalidArgumentException in UrlGenerator.php line 314:
Route [userItems] not defined.
首先,在我的编辑页面中,我有一个表单,该表单将项目 table(item_id 和 user_id)中的 2 个参数传递给控制器,它看起来像这个:
{!! 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');
}
我的带有 Update 方法的路由如下所示:
Route::put('/userItems/{id}/{user_id}', 'ItemController@update');
现在,当我提交时,我目前被路由到:
http://localhost:8000/userItems/26/3
我需要转到:
http://localhost:8000/userItems/3
关于如何使 item_id(26) 从路线中消失的任何想法?
您可以使用 hidden input
Define a hidden field (not visible to a user).
你的表格
{!! 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');
}
我想创建一个 edit_Item 功能,但在提交编辑后的表单时我在路由方面遇到了一些麻烦。我收到此错误:
InvalidArgumentException in UrlGenerator.php line 314:
Route [userItems] not defined.
首先,在我的编辑页面中,我有一个表单,该表单将项目 table(item_id 和 user_id)中的 2 个参数传递给控制器,它看起来像这个:
{!! 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');
}
我的带有 Update 方法的路由如下所示:
Route::put('/userItems/{id}/{user_id}', 'ItemController@update');
现在,当我提交时,我目前被路由到:
http://localhost:8000/userItems/26/3
我需要转到:
http://localhost:8000/userItems/3
关于如何使 item_id(26) 从路线中消失的任何想法?
您可以使用 hidden input
Define a hidden field (not visible to a user).
你的表格
{!! 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');
}