所以基本上我的应用程序有两种类型的动态网址..
- app.com/{page}
- app.com/{user}
两者都有自己的 Controller
- PageController@index
- 用户\ProfileController@index
但我正在努力让它发挥作用。
我尝试了几种不同的方法。这是我尝试过的两个..
Route::get('{slug}', function($slug) {
if (App\Page::where('slug', $slug)->count()) {
// return redirect()->action('PageController@index', [$slug]);
// return App::make('App\Http\Controllers\PageController', [$slug])->index();
return 'Page found';
} else if (App\User::where('username', $slug)->count()) {
// return redirect()->action('User\ProfileController@index', [$slug]);
// return App::make('App\Http\Controllers\User\ProfileController', [$slug])->index();
return 'User found';
} else {
return abort(404);
}
});
我觉得我应该使用中间件/过滤器来做到这一点。任何帮助都会很棒。谢谢。
最佳答案
我认为您可以通过 Route::group
使用中间件来过滤它是页面还是用户来实现您的目标。
Route::group(['middleware' => 'isPage'], function () {
Route::get('{slug}', ['as'=> 'pages.show', 'uses' => 'PageController@show']);
});
Route::group(['middleware' => 'isUser'], function () {
Route::get('{slug}', ['as'=> 'users.show', 'uses' => 'User\ProfileController@show']);
});
关于php - Laravel 5 条件路由和多个 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33033524/