2016-07-26 58 views
1

想象有下列网址结构:Laravel 4.2继续路由

someurl.axyz/{post-slug} 
someurl.axyz/{page-slug} 

post-slugpage-slug存储在独特的数据库表列。使用Laravel 4.2处理路线的最“优雅”方式是什么(如果与Laravel v5.2有所不同)?

,我决定到这个模型使用绑定参数。以下代码位于routes.php文件的底部。我想知道这个任务是否有更简单的解决方案。

Route::bind('directslug', function($value, $route) { 
    $post = Post::where('slug', $value)->first(); 
    if ($post) { 
     return $post; 
    } 
    $page = Page::where('slug', $value)->first(); 
    if ($page) { 
     return $page; 
    } 

    throw new NotFoundHttpException; 
}); 
Route::get('{directslug}', function(Post $post) { 
    return $post; 
}); 
Route::get('{directslug}', function(Page $page) { 
    return $page; 
}); 

App::missing(function($exception) { 
    return Response::view('error.missing', array('title' => '404 Page not Found'), 404); 
}); 
+0

4.2,你必须参数手动绑定,就像你所做的,和5.2结合它的开箱。 – TheFallen

回答

0

我用route model binding处理所有事情,与您的解决方案非常相似。

在我看来,你应该保持一个独立的模型为每个路由,否则,你可能最终在一个页面相同塞后......即使我敢肯定,你采取这种照顾。你使用两条不同的路线后,为什么你应该总是如果有人正在寻找一个页面查询帖子?