2011-09-22 7 views
17

コードシナーのウェブサイトの管理者とフロントエンドを分ける最善の方法は、すべてのライブラリ、モデル、ヘルパーなどを共通に使用していましたが、コントローラとビューのみです。分離する。コードシニターで管理者とフロントを区別する

私はより適切な方法をしたい、アップパフォーマンス、シンプルさ、および共有モデルとライブラリのなど

答えて

16

私は非常CI devのフィルチョウザメで、この記事で概説した方法を読んでお勧め:

http://philsturgeon.co.uk/blog/2009/07/Create-an-Admin-panel-with-CodeIgniter

私のアドバイス:あなたのプロジェクトを組織するために、モジュールを使用してください。

https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc/wiki/Home

フロントおよび/またはバックエンド用base controllerを作成します。

// core/MY_Controller.php 
/** 
* Base Controller 
* 
*/ 
class MY_Controller extends CI_Controller { 
         // or MX_Controller if you use HMVC, linked above 
    function __construct() 
    { 
     parent::__construct(); 
     // Load shared resources here or in autoload.php 
    } 
} 

/** 
* Back end Controller 
* 
*/ 
class Admin_Controller extends MY_Controller { 

    function __construct() 
    { 
     parent::__construct(); 
     // Check login, load back end dependencies 
    } 
} 

/** 
* Default Front-end Controller 
* 
*/ 
class Public_Controller extends MY_Controller { 

    function __construct() 
    { 
     parent::__construct(); 
     // Load any front-end only dependencies 
    } 
} 

バックエンド・コントローラー意志extend Admin_Controller、およびフロントエンドコントローラ意志extend Public_Controller:このような何か。フロントエンドのベースコントローラーは実際には必要ではありませんが、例として存在するので便利です。必要に応じてMY_Controllerを代わりに拡張することができます。

必要に応じてURI routingを使用して、フロントエンドとバックエンドのコントローラを個別に作成します。フロントエンドコントローラとバックエンドコントローラの両方が同じアプリケーションに存在する場合、すべてのヘルパー、クラス、モデルなどを共有できます。

+0

このアプローチは非常に便利ですが、私はそれを得ることはできませんが、私は質問があります。なぜMY_Controllerを作成しますか?それは必要ですか?? Admin_ControllerとPublic_ControllerがCI_Controllerを代わりに拡張するとどうなるでしょうか?これも正しいでしょうか? – Lykos

+0

Bitbucketリンクが機能していません。 –

9

私は非常に簡単なアプローチ、すなわちファイルフォルダを使用します。 CIユーザーガイドのセクションOrganizing Your Controllers into Sub-foldersを参照してください。

私は、他の人がCodeIgniterを使用してビルドしているように、公開用のウェブサイトを構築しました。次に、2つの追加のフォルダcontrollers/adminviews/adminがあります。

http:// [ホスト名]/admin/controllerを介して管理コントローラにアクセスし、特定の認証チェックを除いて他のコントローラと同様に動作します。同様に、ビューは、単にフォルダ名を含むように呼び出されます:$this->load->view('admin/theview');

私はそれより複雑な何かをする理由は見つけられていません。あなたのすべてがここを完全に解決策を見つけることができます

+0

「あなたのコントローラをサブフォルダに編成しています。リンクがうまくいかない場合は、私に更新してください。 –

+2

これは最新のリンクです。http://ellislab.com/codeigniter%20/user-guide/general/controllers.html#subfolders –

+0

ありがとう@Pramod。リンクが更新されました。 –

2

、adminとフロントエンドがHMVCを使用し、私は2つのサードパーティのライブラリを使用しています

テンプレート分離テンプレートライブラリを使用するためのhttps://github.com/bhuban/modular

モジュールの分離、あなたはそれを見つけることができますzipファイル。フィルチョウザメ

によってテンプレート用wiredesignz

  • テンプレートエンジンによって開発されたモジュール式のため

    1. HMVCちょうどあなたのウェブサーバのルートディレクトリに解凍して

      localhost/modular for front-end 
      

      localhost/modular/admin for back-end 
      
      を実行します

      application/back-modulesは、それは、フロントエンドモジュールフロントエンドテンプレートのバックエンドテンプレート templates/frontための同様 templates/admin

      ためのものであり、バックエンドモジュール

      application/front-modulesするためのものである

      themes/adminバックエンドテーマの場合 themes/frontフロントエンドテーマの場合

      オリジナルのコードをハッキングするだけのものはありませんconfig.phpとindex.phpを使用して

  • +0

    これは私が検索したことです!しかし、私はそれにアクセスしようとすると、私はエラーがあります:あなたのデフォルトコントローラを読み込むことができません。 Routes.phpファイルで指定されたコントローラが有効であることを確認してください。それを解決するアイデアはありますか?ありがとう –

    関連する問題