すべてのライブラリ、モデル、ヘルパーなどを共通に使用していたが、コントローラーとビューのみが分離されるように、codeigniterでWebサイトの管理者とフロントエンドを分離する最良の方法は何ですか。
パフォーマンス、シンプルさ、モデルやライブラリの共有など、より適切な方法が欲しい。
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ルーティング を使用し、フロントエンドとバックエンドに個別のコントローラーを作成します。フロントエンドとバックエンドの両方のコントローラーが同じアプリケーションに存在する場合、すべてのヘルパー、クラス、モデルなどを共有できます。
私はファイルフォルダーという非常に単純なアプローチを使用しています。 CIユーザーガイドのセクション コントローラーをサブフォルダーに整理する を確認してください。
他の人がCodeIgniterで構築されるのと同じように、私は自分の公開Webサイトを構築しています。次に、2つの追加フォルダー、_controllers/admin
_と_views/admin
_があります。
管理コントローラーはhttp:// [ホスト名]/admin/controllerを介してアクセスされ、特定の認証チェックがあることを除いて他のコントローラーと同じように動作します。同様に、ビューはフォルダー名を含めて単純に呼び出されます:$this->load->view('admin/theview');
。
それよりも複雑なことをする理由はわかりません。
あなたはここで完全な解決策を見つけることができます https://github.com/bhuban/modular
HMVCを使用した管理者とフロントエンドのモジュール分離、およびテンプレートライブラリを使用したテンプレート分離
私は2つのサードパーティライブラリを使用しています。Zipファイルで見つけることができます。
ウェブサーバーのルートディレクトリに解凍して実行するだけです
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を使用して構成された元のコードでハッキングされたものはありません