2016-12-29 8 views
0

こんにちは私は、管理環境とユーザー環境を使用するアプリケーションを開発中です。私のコードとコントローラを読みやすくするために、私は管理者とユーザコントローラのためにある種のプレフィックスを使いたいと思っています。または、admin enユーザコントローラに別のディレクトリを使用することもできます。 URLの正確な名前を使用せずにコントローラを呼び出す。codeigniterでカスタム名前付きコントローラを使用する

私のアイデアのためにこれを行う方法や回避策があるかどうかは誰にも分かりません。 .PHP [コントローラ名]ユーザーまたは[コントローラ名]

.PHP EDIT USER_::。私が使用したい例えば ので

私は、管理コントローラからユーザーのコントローラを分離するためのルートを使用し、それがブレーキ私のテンプレートリゾルバ。

例えば、URLが:http://myapplication.com/user/profileの場合、これは通常、ユーザーコントローラと関数プロファイルを呼び出します。私のテンプレートリゾルバはフォルダのユーザを探し、level1.tplファイルがあるかどうかを調べます。 urlのプロファイルを編集したいとしましょう:http://myapplication.com/user/profile/edit/1これで、フォルダユーザでlevel2.tplファイルを検索し、id 1の編集機能を呼び出します。

ルートの問題は次のとおりです。私は管理者/ダッシュボードを使用するときに間違ったフォルダを検索するため、フォルダのダッシュボードの代わりにフォルダの管理者が表示されるため、不要なURLの魔法に何かが追加されます。だから、基本的に私は必要なもの

enter image description here

コントローラが配置されているか、ユーザーのどのような種類の異なるファイル名ベースがログインしている別のディレクトリを使用するようにアプリケーションを伝えることだけである。

感謝あなたに知識を共有するために、事前に

+0

ルートの使用はどうですか? https://www.codeigniter.com/userguide3/general/routing.html – jcorry

+1

あなたが望むなら、 'admin'コントローラを物理的に' user'から分離したままにするフォルダを作ることもできます。あなたがあなたのURLにアクセスしたときなど。 'example.com/admin/dashboard'(' index.php'を削除したと言っています)、Codeigniterは 'Dashboard'コントローラを' admin'というフォルダに探します。 – Hicaro

答えて

2

これはさまざまな方法で行うことができます。

1.、クラスシグネチャを以下で "Admin_Controller.php" と "User_Controller.php" というアプリケーション/コアで、これらのクラスで

class Admin_Controller extends CI_Controller 
{  
    public function __construct() 
    { 
     parent::__construct(); 
    } 
} 

class User_Controller extends CI_Controller 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
    } 
} 

を2つのファイルを作成します。 PHPロジックを使用して任意の操作を行うことができます。コントローラをAdmin_ControllerまたはUser_Controllerに拡張するだけです。 例:

// for admin 
$route['admin/(.+)'] = 'admin_$1'; 

// for frontend 
$route['(.+)'] = 'user_$1'; 

私は、これはあなたにいくつかのアイデアを与えるかもしれない願っています:class Home extends User_Controller {}またはclass Dashboard extends Admin_Controller {}

2.また、単にroutes.phpの

などでそれを行うことができます。

+0

URLに余分な部分を追加しないことも可能ですか? 私のテンプレートにもカスタムディレクトリを使用しています。スマートでは罰金だけではなく、URL構造に基づいてテンプレートを作成するので、URLに何かを追加すると、アプリケーションはテンプレートファイルの間違ったフォルダを探します。 – Iason

+1

okこれで、可能なすべての要求をそれぞれのコントローラにマップする必要があります。 '/ home'は' Home controller'をロードし、 '/ dashboard'は' Dashboard controller'などをロードします。そのためには、MY_Controller extends CI_Controllerという名前のファイル 'MY_Controller.php'を使ってアプリケーション/このクラスの{} 'は、適切なクラス呼び出しのためにスイッチの大文字と小文字を使用できる' public function _remap(){} 'メソッドを単に使用します。これ以外にもルートファイルでもこれを行うことができます。 – puncoz

関連する問題