Laravel 5 应用程序中的动态路由路线页面控制器方法
我希望有人能帮助我为可以有多个段的URL进行动态路由。我一直在网络上进行一些搜索,但我找不到任何东西可以帮助我解决我的具体情况。
一点背景...几年前,我为自定义客户端网站开发了一个CMS包,该包是在CodeIgniter上构建的。此CMS软件包具有多个模块(页面,博客,日历,查询等)。对于 Pages 模块,我将路由缓存到一个“自定义路由”配置文件,该文件将页面的完整路由(包括父路由、祖父路由等)与页面的 ID 相关联。我这样做是为了不必执行数据库查找来查找要显示的页面。
我目前正在使用Laravel(5.1)重建这个CMS软件包[当我学习Laravel时]。我需要先弄清楚路由情况,然后才能在新版本的软件包中继续使用我的Pages模块。
我知道我可以做这样的事情...
// routes.php
Route::get('{slug}', ['uses' => 'PageController@view']);
// PageController.php
class PageController extends Controller
{
public function view($slug)
{
// do a query to get the page by the slug
// display the view
}
}
如果我不允许嵌套页面,这将起作用,但我这样做了。我只根据父级强制实施 slug 的唯一性。因此,可能有多个页面带有法戈的鼻涕虫...
- 位置/法戈
- 员工/法戈
与我使用CodeIgniter构建的软件包一样,我希望能够避免额外的数据库查找来找到要显示的正确页面。
我最初的想法是创建一个配置文件,该文件将具有动态路由,就像我对旧版本的系统所做的那样。路由只会在特定时间更改(当创建页面时,当修改 slug 时,当父级更改时),因此“缓存”它们将非常有效。但我对Laravel还是新手,所以我不确定最好的方法是什么。
我确实设法弄清楚以下路线有效。但这是设置它的最佳方法吗?
Route::get('about/foobar', function(){
return App::make('\App\Http\Controllers\PageController')->callAction('view', [123]);
});
Route::get('foobar', function(){
return App::make('\App\Http\Controllers\PageController')->callAction('view', [345]);
});
基本上,我想在创建页面时(或更改辅助信息组或父级)将特定路由绑定到特定的页面 ID。
我只是把事情复杂化了吗?
任何有关这方面的帮助或指导将不胜感激。
谢谢!