2

私はcodeigniterを始めたばかりです。同じルート設定でURLからコントローラー名を隠したいです。

私は、ホームと呼ばれる同じ機能を持つ学生、スタッフ、教師である3つのコントローラーを持っていますが、これは明らかに機能しません

$route['home'] = 'students/home';
$route['home'] = 'staff/home';

これを達成する方法はありますか?ユーザータイプを含むcodeigniterセッションクラスを使用したセッションデータがあるので、このようなことを試しました

session_start()    
$route['home'] = $_SESSION['user_type'].'/home';

しかし、私はセッションデータを取得できません.おそらくcodeigniterセッションクラスを使用していますか?? では、どうすればデータを取得できますか?または他の解決策はありますか?

4

1 に答える 1

2

おそらく、共通のコントローラーを作成し、2番目のURIパラメーターで分散する必要があります。

家/学生または家/スタッフ

$route['home/:any'] = "home";

およびホームコントローラーのインデックス方式:

public function index()
{
    $type = $this->uri->segment(2);
    switch($type){
        case "student":
            $this->student();
        break;
        case "staff":
            $this->staff();
        break;
        default:
            $this->some_other_method();
        break;
    }
}

明らかに、学生とスタッフのメソッドを作成し、必要に応じて別の方法で処理します。

補足-なぜコントローラーの名前を隠したいのですか?それはセキュリティホールか何かのようではありません。

于 2012-11-12T20:28:27.030 に答える