0

私のコントローラーsquadは、CMSのより大きなコミュニティ内の内部グループのすべての機能を管理します。このグループを参照する動詞を変更する機能を管理者に提供したいと思います。そのような例は次のようになります:、、、teamまたはそれがそれらを満たしている場合でも。wingplatoondogfood

私が直面している問題は、データベース文字列からルーティングをプルする必要があるため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

私の友人がこの記事を見つけ、ソリューションは完全に機能します。確かに別の db リクエストが必要ですが、それは代償です。

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 に答える
1

私が通常これを行う方法は、文字列 (例: 分隊_) をセグメントに追加することです。これは、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 に答える