我对 laravel5 还很陌生,我正在尝试在route.php下动态生成路由别名
就是这个:
Route::get('/menu/{category}/{product}/{item}', 'MenuController@listItem')->name('/{category}/{item}');
Run Code Online (Sandbox Code Playgroud)
我已经尝试过使用“as”和“uses”,但仍然得到:
/menu/{category}/{product}/{item}
Run Code Online (Sandbox Code Playgroud)
将所有参数替换为正确的值,而不是:
/{category}/{item}
Run Code Online (Sandbox Code Playgroud)
解释维尼修斯·路易斯所说的话。
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]);
Run Code Online (Sandbox Code Playgroud)
根据情况,您可能不执行 ->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]);
Run Code Online (Sandbox Code Playgroud)
可能有更好的方法来进行查询,但这应该适合您。