上一个问题的延续:自定义锂路由方案
注意:这是特定于锂框架的
问题
我继承了一个 URL 方案,它实际上没有任何约定来区分页面、项目和类别。所以,我有一个非常通用的路由器,它传递给一个包罗万象的控制器。
这个包罗万象的控制器 (PagesController) 使用 url 作为键从数据库中检索页面类型。然后 PagesController 运行方法并根据页面类型选择模板。我将这些信息无限期地存储在 Memcached 中,因此查找速度非常快。
然而,随着越来越多的页面类型开始发挥作用,我可以看到这个控制器变得过于臃肿和不灵活。理想情况下,我想将不同的页面类型分解为它们自己的控制器。
解决方案?
是否有可能有一个路由方案来检查数据库以确定正确的控制器?
我的第一个想法是在and中继承lithium\net\http\Router
和使用自定义逻辑。Router::connect()
Router::_parseController()
如果可以在 bootstrap\routes.php 中查询数据库并lithium\net\http\Route
根据结果创建一个新对象,那就太好了。然后,只需将其传递给Router::connect()
. 这似乎是一个可怕的黑客攻击。
无论哪种方式,Router::connect()
它的设计并不意味着是动态的。