想要捕获所有路径,查询数据库中的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来说相对较新,这是最好的方法吗?如果没有,还有其他建议吗?
答案 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);
}
}
}