0

HMVC Modular拡張機能を備えたCodeigniterを使用しており、Webサイトのコンテンツを管理するためのバックエンドCMS領域があります。ベースURL+"admin"(http:// localhost / cms / admin)をプレフィックス"admin_"のコントローラーメソッドにルーティングしています。

例: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
ディレクトリ:modules / faqs / controllers/faqs-インデックス方式
- 
ここが壊れます
- 
URL:http:// localhost / cms / admin / faqs / category
ディレクトリ:modules / faqs / controllers / faqs-categoriesメソッド(終了しません)
必要なもの:modules / faqs / controllers/categories-インデックス方式

ウェブサイトの「管理者」を維持しながらHMVCを使用するにはどうすればよいですか?

4

2 に答える 2

2

フロントエンド関数とバックエンド関数を同じコントローラーに配置することで、生活が少しトリッキーになりすぎています。CodeIgniterで管理構造を作成する方法についての私の記事をご覧ください。

于 2010-02-10T09:47:45.630 に答える
0

私は似たようなものに取り組んでおり、あなたが行ったようにスワッピングを実装しました(3番目のオプション)そしてそれはうまくいきました。

adminセクションを処理するフロントコントローラーを実装し、HMVC modules :: run()を使用してモジュールを実行し、必要に応じて出力をバッファリングしようとしましたが、別の問題に直面しました。URIスキームを/から変更する必要があります。 CIはルーティングメカニズムを「/」に依存しているため、モジュールセグメントをパラメータとしてコントローラに送信することはできません。

Philが提案したように、管理セクションをエミュレートするのが唯一の方法ですが、CMSを使用するすべての人が実装するコードを引き続き制御する別のオプションがあります。

CI_Controller(またはHMVCを使用している場合はMX_Controller)を拡張し、ロジックを処理してモジュールが実行できることを制御するAdmin_Controllerを追加できます。

このCodeIgniter基本クラスを見てください:それを乾いた状態に保つ

于 2012-12-07T09:32:29.200 に答える