我正在写一个CMS的基础上我自己。
我用node和nodeType逻辑实现了它的内容部分。(每个节点都属于一个nodeType)
在nodes和nodetypes表中都有slug字段,我在router中写了这两条路由:
Router::connect('/:typeslug',array('controller' => 'nodetypes', 'action' => 'view'),array('pass'=>array('typeslug')));
Router::connect('/:typeslug/:nodeslug',array('controller' => 'nodes', 'action' => 'view'),array('pass'=>array('typeslug','nodeslug')));
它将实现如下内容:http://domain.ext/article/my-custom-article
第一个问题:这是一个正确和正常的方法吗?
第二个问题:像wordpress这样使用复杂的重击的解决方案是什么?(例如,使用诸如:http://mydomain.ext/2013/01/01/article/等存档日期的段塞…
而更重要的是,在管理部分,能够在弹头类型之间切换。
谢谢你的指导
最佳答案
问题1
这是正常的方法吗?
是的,很好,看看与cakephp应用程序捆绑在一起的PagesController
。
问题2
使用像wordpress这样的复杂重击的解决方案是什么?(例如,使用诸如:documentation等存档日期的段塞…
在这种特殊情况下,您必须在routes.php
文件中设置其他路由。
例如:
Router::connect(
'/article/:year/:month/:day/*', array('controller' => 'articles')
);
对http://mydomain.ext/2013/01/01/article/的任何请求都将被路由到文章控制器中的以下操作:
public function index($year, $month, $day){
...
}
注意,我稍微颠倒了一下您的url,因为它避免了对不存在的控制器的模糊请求。
问题3
……更重要的是,在管理部分,能够在弹头类型之间切换。
在此实例中,您可以根据另一个配置值打开和关闭路由。您必须专门为应用程序设置一个配置文件,但可以在运行时对其进行修改:
Routing.php:
// load your routing configuration
Configure::load('application_config', 'default');
// setup your routes
if(empty(Configure::read('routing_1')){
// default routing
...
}else{
// routing 1
...
}
管理控制器.php:
public function someAction(){
// persist configuration to file
Configure::dump('application_config', 'default', array('routing_1' => true));
}
有关更多信息,请查看文档中的http://mydomain.ext/article/2013/01/01部分。
我希望这能给你指明正确的方向。
关于cakephp - 带有cakePHP的多个slug类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16617556/