【发布时间】:2015-12-18 17:05:29
【问题描述】:
我必须支持一个项目的 url 友好结构。
有多个带有 slug 列的表,在 cakephp 中如何以最有效的方式将 slug 路由到控制器。
起初我在检查表中是否存在 slug,如果存在 slug 使用路由:
$c = TableRegistry::get('cateogories');
$result= $c->find()->select(['id'])->where(['url'=>$slug])->toArray();
if(count($result) > 0) {
$routes->connect(
'/:slug',
['controller' => 'Categories', 'action' => 'index', 'id' => $result[0]['id']]
);
}
问题是我有多个检查,如上述检查,并且每个检查都在运行,即使路由先前匹配(不需要运行,因此正在调用额外的查询)。
那么我怎样才能添加某种条件语句,以便它只检查路由是否匹配,如果之前的路由都不匹配。
【问题讨论】:
-
而且永远不会有任何冲突,即 slug 在多个表中是唯一的?
-
是的,不会有冲突
标签: php cakephp cakephp-3.0