假设我们有2条这样的路线:
Route::get('{categoryitem}', ['as' => 'category_index', 'uses' => 'CategoryDisplayController@index']);
Route::get('{entryitem}', ['as' => 'entry', 'uses' => 'EntryController@show']);
参数没有参数约束,并且定义了以下2个路径模型绑定:
Route::bind('categoryitem', function($slug)
{
return Category::whereSlug($slug)->root()->firstOrFail();
});
Route::bind('entryitem', function($slug)
{
return Entry::whereSlug($slug)->firstOrFail();
});
现在让我们假设我们运行的网址是http://project/something
。是否有可能使Laravel在categoryitem
段的路线something
中首先看起来如果没有找到模型,它将在第二条路线中查看slug something
的入口?除了为路由
答案 0 :(得分:2)
目前无法在条件下“跳过”路线。虽然有一个request on github允许在框架实现的条件下跳过...
与此同时,你将不得不写一条抓住它们的路线。如果项目存在,则确定该路线(或控制器,如果您愿意)内部。
Route::get('{slug}', function($slug){
// check if categoryitem exists
// else check if entryitem exists, etc...
});
显然,如果这变成了两个代码,将其移动到控制器