web-dev-qa-db-ja.com

codeigniterで個別の管理者とフロント

すべてのライブラリ、モデル、ヘルパーなどを共通に使用していたが、コントローラーとビューのみが分離されるように、codeigniterでWebサイトの管理者とフロントエンドを分離する最良の方法は何ですか。

パフォーマンス、シンプルさ、モデルやライブラリの共有など、より適切な方法が欲しい。

18
Sohail

CI開発者Phil Sturgeonがこの記事で概説した方法を読むことを強くお勧めします。

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を拡張できます。

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

16
Wesley Murch

私はファイルフォルダーという非常に単純なアプローチを使用しています。 CIユーザーガイドのセクション コントローラーをサブフォルダーに整理する を確認してください。

他の人がCodeIgniterで構築されるのと同じように、私は自分の公開Webサイトを構築しています。次に、2つの追加フォルダー、_controllers/admin_と_views/admin_があります。

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

それよりも複雑なことをする理由はわかりません。

10
Mike S.

あなたはここで完全な解決策を見つけることができます https://github.com/bhuban/modular

HMVCを使用した管理者とフロントエンドのモジュール分離、およびテンプレートライブラリを使用したテンプレート分離

私は2つのサードパーティライブラリを使用しています。Zipファイルで見つけることができます。

  1. Wiredesignzが開発したモジュラー用HMVC
  2. Phil Sturgeonによるテンプレート作成用のテンプレートエンジン

ウェブサーバーのルートディレクトリに解凍して実行するだけです

localhost/modular for front-end

そして

localhost/modular/admin for back-end

application/back-modules、それはバックエンドモジュール用です

application/front-modules、それはフロントエンドモジュール用です

同様にtemplates/adminバックエンドテンプレートの場合templates/front(フロントエンドテンプレートの場合)

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

Config.phpとindex.phpを使用して構成された元のコードでハッキングされたものはありません

3
Bhuban