2016-07-26 57 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處理所有事情,與您的解決方案非常相似。

在我看來,你應該保持一個獨立的模型爲每個路由,否則,你可能最終在一個頁面相同塞後......即使我敢肯定,你採取這種照顧。你使用兩條不同的路線後,爲什麼你應該總是如果有人正在尋找一個頁面查詢帖子?