您有 2 个选项:
- 为每个使用不同的路线:
Route::get('/users/{user}', 'UsersController@show');
Route::get('/articles/{article}', 'ArticlesController@show');
- 自定义您的分辨率逻辑
RouteServiceProvider.php
:
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
parent::boot();
Route::bind('userOrArticle', function ($value) {
return is_numeric($value)
? App\User::where('id', $value)->firstOrFail()
: App\Article::where('title', $value)->firstOrFail();
});
}
Route::get('/{userOrArticle}', function ($userOrArticle) {
return $userOrArticle instanceof \App\User
? redirect()->action('UsersController@show', ['user' => $userOrArticle]);
: redirect()->action('ArticlesController@show', ['article' => $userOrArticle]);
});
有关更多信息,请参阅文档的“自定义解析逻辑”部分:https ://laravel.com/docs/master/routing#explicit-binding