Laravel 5用参数命名了路线

时间:2016-04-08 22:09:07

标签: 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}

2 个答案:

答案 0 :(得分:2)

试一试:

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

答案 1 :(得分:2)

阐述Vinicius Luiz所说的话。

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]);

视情况而定,你可能不会 - > gt; 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]);

可能有更好的方法来执行查询,但这应该适合您。