我一直试图用带有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
谢谢
答案 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