Hai*_*ood 23 php database routes dynamic laravel
我正在考虑为我的下一个项目切换到laravel.
我的下一个项目可能是一个带有一些静态页面的小站点,一个博客和一个项目经理,并且将使用控制器而不是路由.
我很好奇的是如何管理Laravel中的动态路线.
基本上,我想构建一个管理部分,以便我可以轻松地动态创建静态页面,静态页面将有SEO焦点的网址,例如http://domain.com/when-it-started我不想要必须为每个页面手动创建一个新的控制器或路由.
所以我想知道最清洁的方法是什么.
基本上所有静态页面都将共享相同的视图,只需要更改几个变量.
动态路由应该与控制器一起使用而不是.
例如,如果我们有一个about带功能的控制器,staff则应通过http://domain.com/about/staff加载
但是我们没有这个功能players,所以调用http://domain.com/about/players应该检查数据库,看看是否存在动态路由并匹配.如果确实显示,则显示404页面.同样对于不存在的控制器.(例如,没有when-it-started控制器!)
选择的答案在Laravel 4中似乎不起作用.对此有何帮助?
Dej*_*i S 17
对于Laravel 4来说这样做
Route::get('{slug}', function($slug) {
$page = Page::where('slug', '=', $slug)->first();
if ( is_null($page) )
// use either one of the two lines below. I prefer the second now
// return Event::first('404');
App::abort(404);
return View::make('pages.show', array('page' => $page));
});
// for controllers and views
Route::get('{page}', array('as' => 'pages.show', 'uses' => 'PageController@show'));
Run Code Online (Sandbox Code Playgroud)
小智 8
你可以使用路径通配符作为工作,你可以从一个开始,(:any)如果你需要多个url段添加一个可选项(:all?),然后从slug中识别页面.
例如:
Route::get('(:any)', function($slug) {
$page = Page::where_slug($slug)->first();
if ( is_null($page) )
return Event::first('404');
return View::make('page')->with($page);
});
Run Code Online (Sandbox Code Playgroud)