我正在使用 Laravel 5,需要做一个通配符路由,根据从数据库中提取的 URL 类型将用户发送到不同的 Controller 。
我需要检查数据库中的 URL slug,然后根据保存在数据库中的 slug 类型加载相关的 Controller /方法。我正在努力处理最后一部分,即将用户发送到相关 Controller 。以下是我的路线:
Route::any('{slug}', function($slug){
$url = \App\Url_slug::where('url_slug', $slug)->first();
if($url->count()){
switch($url->url_type){
case 'product':
// SEND USER TO PRODUCT CONTROLLER
break;
case 'category':
// SEND USER TO CATEGORY CONTROLLER
break;
case 'page':
// SEND USER TO PAGE CONTROLLER
break;
}
} else {
abort(404);
}
});
为了将用户发送到相关 Controller ,我需要用什么来替换评论?
最佳答案
为此,您需要加载一个 app()
实例,然后调用 make('Controller')
方法以及 callAction
。完整路线如下:
Route::any('{slug}', function($slug){
$url = \App\Url_slug::where('url_slug', $slug)->first();
if($url->count()){
$app = app();
switch($url->url_type){
case 'product':
$controller = $app->make('App\Http\Controllers\ProductController');
break;
case 'category':
$controller = $app->make('App\Http\Controllers\CategoryController');
break;
case 'page':
$controller = $app->make('App\Http\Controllers\PageController');
break;
}
return $controller->callAction('view', ['url_slug' => $url->url_slug, 'url_slug_id' => $url->id]);
} else {
abort(404);
}
});
关于php - 我如何在 Laravel 中执行变量/通配符路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31721736/