CodeIgniterのHMVCとCMS
-
19-09-2019 - |
質問
私はHMVCモジュラー延長でCodeIgniterのを使用してウェブサイトのコンテンツを管理するためのバックエンドCMSの面積を持っているのです。メソッドをコントローラに:私は、ベースURL + "admin" を(// localhostの/ CMS /管理する HTTP)ルーティングしています接頭辞 "管理者_" ます。
e.g. function admin_index() {...}
そして、ここでは私のルーティングされます:
$route['admin/([a-zA-Z]+)/(:any)'] = "$1/admin_$2"; $route['^admin/(:any)(/)?'] = "$1/admin_index"; $route['^admin(/)?'] = "dashboard/admin_index"; $route['admin/logout'] = "login/admin_logout";
はHMVCで、それは正しくルーティングされていません。ここでは何が起こるかです:
URL: http://localhost/cms/admin/faqs Directory: modules/faqs/controllers/faqs - index method -- here is where it breaks -- URL: http://localhost/cms/admin/faqs/categories Directory: modules/faqs/controllers/faqs - categories method (does not exits) Desired: modules/faqs/controllers/categories - index method
「admin」を維持しながら、どのように私はHMVCを使用することができ、ウェブサイトのですか?
解決
あなたは同じコントローラにフロントエンドとバックエンドの機能を置くことによって人生が少しあまりにもトリッキー作っています。作成する方法に私の記事を見ていますCodeIgniterのの中の管理構造ます。
他のヒント
私は似た何かに取り組んで、あなたは(第三オプション)行ったようにスワップを実施し、それがうまく働いています。
私は管理者のセクションを処理し、HMVCモジュール::実行(とモジュールを実行します)、私が望むように、出力をバッファリングするためにフロントコントローラを実装しようとしたが、その後、私は別の問題に直面している、あなたはURIを変更する必要があります制度から/へ_または何か他のもの、CIはに依存しているので、あなたが文句を言わないあなたのコントローラにパラメータとしてモジュールセグメントを送信することができるので、「/」、それはルーティングメカニズムだため。
唯一の方法は、フィルが示唆したように、管理セクションをエミュレートすることですが、それでもあなたのCMSを使って誰でも実装されたコードを管理しているために別のオプションがあります。
あなたは(あなたがHMVCを使用している場合やMX_Controller)CI_Controllerを拡張し、あなたのロジックを処理し、モジュールが何ができるかを制御しますAdmin_Controllerを追加することができます。
この CodeIgniterの基底クラスを見てください:DRY にそれを維持