0

我的控制器squad管理 CMS 更大社区内的内部组的所有功能。我想为管理员提供更改引用该组的动词的能力。这样的例子可能是:team, wing, platoon, 或者即使dogfood它满足它们。

我遇到的问题是需要从数据库字符串中提取路由,因此site.com/squad成为管理员设置的值。然而。如果没有 a) 破解核心或 b) 扩展 CI_Router,就无法做到这一点。

我已经开始了扩展,但只到了这一步:

class MY_Router extends CI_Router {
    function MY_Router()
    {
        $this->config =& get_config();
        parent::__construct();
    }
}  

我想要完成的是:

define('UNIT', $this->get_setting('squad-term'));
$route[UNIT] = "squad"; 

有没有人有办法解决这个问题?

4

2 回答 2

1

我通常这样做的方法是将字符串(例如:squad_)添加到段中,然后您可以将其与 routes.php 中的正则表达式匹配

site.com/squad_team
site.com/squad_squad
site.com/squad_dogfood

或者更简洁一些,添加另一个“级别”,然后您可以在 routes.php 中通过$route['s/(:any)']

site.com/s/team
site.com/s/squad
site.com/s/food

说了这么多,我不知道你为什么

需要改写班长的名字

?

于 2012-04-08T17:45:44.270 回答
1

我的朋友找到了这篇文章,并且该解决方案非常有效。当然它需要另一个数据库请求,但这是要付出的代价。

config/routes.php

require_once( BASEPATH .'database/DB'. EXT );
$db =& DB();
$query = $db->where('setting_slug', 'squad-term')->get( '_settings' );
$result = $query->result();
$term = lcfirst($result[0]->setting_value);

$route[$term] = "squad";
$route[$term . 's'] = "squads";
于 2012-04-09T16:50:11.127 回答