Cake PHP 3削减路由与表

时间:2015-10-22 19:49:30

标签: php cakephp cakephp-3.x

我一直试图用带有Cake的路由器获得漂亮的URL。

www.mysite.com/category/slug

www.mysite.com/slug

www.mysite.com/category /

我认为没有公式可以得到我想要的,所以我想明确匹配每个网址。我希望我的路由表看起来像这样

  id | url | controller | action | param 

所以当有人去的时候 www.mysite.com/mysubcategory/my-title-of-page

我希望它能够交叉引用" mysubcategory / my-title-of-page"使用url列并继续。这样做的最佳方式是什么?

我的猜测是将所有流量定向到路径控制器

Router::connect('/*', array('controller' => 'Routes', 'action' => 'redirs'));

但是当它重定向时我希望它在浏览器中显示漂亮的URL,我不希望它显示文章/ view / 12

谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用从数据库中检索到的信息动态创建路由,也可以使用查找表的自定义路由类。如果您只有几条路线,那么您可能想要使用前者。

在你的routes.php中只需阅读你的表并连接路线,就应该这么简单。这是一个非常基本的例子:

use Cake\ORM\TableRegistry;

$Routes = TableRegistry::get('Routes');
$routes = $Routes->find();

foreach ($routes as $route) {
    Router::connect(
        $route->url,
        [
            'controller' => $route->controller,
            'action' => $route->action
        ],
        [
            'pass' => [$route->param]
        ]
    );
}

对于动态内容,请检查例如 Mapping slugs from database in routing