3

HMVCを使用して、userというモジュールを作成しました。modules / user / configディレクトリ内に、application / config/routes.phpと同じ形式を使用するroutes.phpがあります。

application / config / routers.phpには、次のルートがあります。

$route['login'] = 'user/login';

これはうまく機能しますが、application / modules / user / config / routers.phpに移動すると、機能しません。404エラーが発生します。

HMVCのドキュメント(https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc)によると、次のようにルートを作成する必要があります。

$route['module_name'] = 'controller_name';

これは、私が次のようにそれをしなければならないことを意味します:

$route['user'] = 'user';

これにより404が発生しますが、404を取得しなかったとしても、これは私が考えていることではありません。/loginがuser/loginに移動するときに、ルーティングを機能させ続けたいと思います。

どんなアイデアでも大歓迎です!

ありがとう!

4

1 に答える 1

3

私はあなたとまったく同じ問題を抱えていましたが、残念ながら、Wiredesignzが拡張機能を作成した方法では、routesファイルをモジュール自体の中に置く場合、パスはモジュール名自体で始まる必要があります。これが、モジュール内に配置されている場合にルートファイルを確認する唯一の方法です。そうは言っても、その時点でモジュール名はすでにわかっているので、ルーティング先のコントローラーとメソッドを指定するだけです。したがって、これを配置すると、モジュールconfigディレクトリ内のroutes.phpファイルに次のようになります。

$route['yourmodule/some-route'] = "yourcontroller/yourmethod";

または言い換えれば:

$route['user'] = 'user/login';

それはうまくいくと私は信じています。しかし、私はまだこれ以上のものが欲しかった。モジュール名がある場合とない場合があるルートを使用できるようにしたかったのです。このため、これを実現するためにモジュールを拡張する必要がありました。これが役立つ場合は、ここで行った作業を見つけることができます。

https://github.com/brianwozeniak/codeigniter-modular-extensions-hmvc

これにより、次のような目的のルートを使用できるようになります。

$route['login'] = 'user/login';

そのroutes.phpがモジュールのconfigディレクトリ内に配置されていても。

于 2013-04-08T22:02:24.377 に答える