如果没有找到模型,则转到下一个匹配的路线

时间:2014-10-26 12:05:55

标签: laravel laravel-4 laravel-routing

假设我们有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的入口?除了为路由

添加一些前缀/后缀之外,我还没有找到解决方案

1 个答案:

答案 0 :(得分:2)

目前无法在条件下“跳过”路线。虽然有一个request on github允许在框架实现的条件下跳过...

与此同时,你将不得不写一条抓住它们的路线。如果项目存在,则确定该路线(或控制器,如果您愿意)内部。

Route::get('{slug}', function($slug){
    // check if categoryitem exists
    // else check if entryitem exists, etc...
});

显然,如果这变成了两个代码,将其移动到控制器