捕获查询数据库的所有路由并发送到控制器而不是查看

时间:2013-11-20 15:58:50

标签: laravel laravel-4

想要捕获所有路径,查询数据库中的url slugs。我收集我可以做以下事情,但我迷失了如何指定我想要使用的控制器而不是生成视图:

Route::get('(:any)', function($slug) {
    $page = Page::where_slug($slug)->first();

    if ( is_null($page) )
        return Event::first('404');

    // want to send to a controller at this point instead of returning a view
    return View::make('page')->with($page);
});

对Laravel来说相对较新,这是最好的方法吗?如果没有,还有其他建议吗?

1 个答案:

答案 0 :(得分:1)

我认为您可以通过直接致电您的控制器来实现:

Route::get('{slug}', 'SlugController@call');

正如曼努埃尔·佩德雷拉所指出的那样,确保这条路线是你最后的路线,因为这是一个很好的选择,而拉拉维尔可能会忽略其后的所有其他路线。

和控制器

class SlugController extends Controller {

    public function call($slug)
    {
        $page = Page::where('slug', $slug)->first();

        if (!is_null($p)) {

            return View::make('page')->with($page);

        } else {

            App::abort(404);    

        }
    }   

}