Php 带参数的Laravel 5命名路由

Php 带参数的Laravel 5命名路由,php,laravel-5,Php,Laravel 5,我对laravel5非常陌生,我正在尝试在route.php下动态生成路由别名 就是这样: Route::get('/menu/{category}/{product}/{item}', 'MenuController@listItem')->name('/{category}/{item}'); 我已经尝试了“as”和“uses”,但我仍然得到: /menu/{category}/{product}/{item} 将所有参数替换为正确的值,而不是: /{category}/{item

我对laravel5非常陌生,我正在尝试在route.php下动态生成路由别名

就是这样:

Route::get('/menu/{category}/{product}/{item}', 'MenuController@listItem')->name('/{category}/{item}');
我已经尝试了“as”和“uses”,但我仍然得到:

/menu/{category}/{product}/{item}
将所有参数替换为正确的值,而不是:

/{category}/{item}
试试看:

Route::get('/menu/{category}/{product}/{item}', ['as' => 'a.name.to.your.route' , 'uses' => 'MenuController@listItem']);

解释维尼修斯·路易斯说的话

Route::get('/menu/{category}/{product}/{item}', ['as' => 'named.route' , 'uses' => 'MenuController@listItem']);

// to get the actual linke
route('named.route', ['category' => $category->id, 'product' => $product->id, 'item' => $item->id]);
根据具体情况,您可能不会执行->id或任何操作,您可能只会传递整个$category、$product等。这取决于控制器中的路由设置方式

编辑: 从你的评论来看,它就像你想要的东西一样:

class MenuController {
    public function lisItem($category_name, $product_name) {
        $category = Category::where('name', $category_name)->first(['id']);
        $product = Product::where('category_id', $category->id)->where('name', $product_name')->first();
    }
}

Route::get('/{category}/{item}', ['as' => 'named.route' , 'uses' => 'MenuController@listItem']);

// to get the actual linke
route('named.route', ['category' => $category->id, 'item' => $item->id]);

可能有更好的方法来进行查询,但这对您应该有用。

很抱歉,我试着打招呼,但它看起来不想更新,bf有人向我开枪:D您的目的是什么?目的只是替换显示的url,例如:“按何处homme是{category}和pendentif是。”{item]为什么不为此创建另一个路由?那么MenuController@listItem将接受两个参数{category}和{item}。您好,我很难筛选给定的参数并将其重定向到正确的控制器。在同一页面中,我使用url执行不同的操作,其中只有两个参数,例如{url'/facebook/follow'}或{{url'/pinterest/follow'}或{{url'/enfant/jouet'}等等…所以我决定添加一些修复参数,以帮助我在route.php中识别操作。希望不要太困惑尝试扩展您的答案,以及您为修复问题所做的操作。嗨,Luiz,谢谢,相同的结果看起来不可用Hi Kenyon thx作为您的答复,但您失去了我我虽然我的问题很简单,但我只想替换显示的使用示例中所示的给定参数创建另一个URL。是否可能?我不确定您试图实现的目标是什么?按照我提供的方法,您将得到一个URL,如/menu/10/5/6,它将解析为MenuController@listItem查看时。您是在尝试为路由添加别名?还是试图让URL显示不同的名称?您实际希望URL是什么?例如,我只希望显示的URL与用于路由的URL不同以您的示例为例,我只想看看/10/6如果您想使用id而不是名称,那么只需更改控制器方法,使listItem$category\u id、$product\u id之类的内容和查询类似于$product=product::where'category\u id'、$category\u id->where'id'、$product\u id'->首先,理论上,您的数据应该具有唯一的id,因此,即使您希望在URL中保留额外的参数,您也不能使用它,并执行类似$product=product::findOrFail$product\u id的操作