【问题标题】:How to pass 2 parameters in a route, but make one hidden in Laravel?如何在路由中传递 2 个参数,但在 Laravel 中隐藏一个?
【发布时间】:2016-12-07 20:21:10
【问题描述】:

我想创建一个 edit_Item 功能,但在提交编辑后的表单时我在路由方面遇到了一点问题。我收到此错误:

InvalidArgumentException in UrlGenerator.php line 314:
Route [userItems] not defined.

首先,在我的编辑页面中,我有一个表单,它从 Items 表(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 如下所示:

Route::put('/userItems/{id}/{user_id}', 'ItemController@update');

现在,当我提交时,我当前被路由到:

http://localhost:8000/userItems/26/3

我需要被路由到:

http://localhost:8000/userItems/3

关于如何使 item_id(26) 从路线中消失的任何想法?

【问题讨论】:

    标签: php laravel routes optional-parameters


    【解决方案1】:

    您可以使用hidden input

    定义一个隐藏字段(用户不可见)。

    你的表格

    {!! 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');
    }
    

    【讨论】:

    • 谢谢,这看起来像是我的问题的解决方案。但是当我使用您提供的示例编辑我的代码时,我现在收到错误:InvalidArgumentException in UrlGenerator.php line 314: Route [items/userItems] not defined。 我正在存储我的 userItems 视图在 items 文件夹中,这就是路由是 items/userItems 的原因。
    • 您能否更具体地编辑您的问题。当您发布表单或尝试访问特定 url 时收到此错误?
    • 我在提交/发布表单时收到此信息。它现在将我路由到正确的 url:localhost:8000/userItems/5 但我出现了这个错误:InvalidArgumentException in UrlGenerator.php line 314: Route [items/userItems] not defined 即使,网址应该可以工作。
    猜你喜欢
    • 2014-06-30
    • 2019-03-17
    • 2015-01-25
    • 1970-01-01
    • 2015-10-14
    • 2021-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多