如何在路由中传递 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');
}