0

これを正確に検索する方法すらよくわかりませんが、URLを持っています

site.com/forum/controller/action

フォーラムがプラグインであり、現在プラグインフォーラムに正常にルーティングしている場合

Router::connect('/forum', array('plugin' => 'forum', 'controller' => 'home', 'action' => 'index'));

ただし、最上位のサブディレクトリをプラグインフォーラムに接続するルートを追加したいと思います。例えば、

site.com/fish/controller/action
site.com/bird/controller/action

両方ともフォーラムプラグインにルーティングします。同様に、

site.com/bird

フォーラムプラグインにもルーティングします。これは私が思いついた中で最高のものであり、効果はありません(「FishControllerが見つかりませんでした」というメッセージが表示されます:

Router::connect('/*/:controller/:action/*', array('plugin' => 'forum'));

私が見つけた最も近い答えは、基本的にこれは不可能かもしれないと言っていますか?http://cakephp.1045679.n5.nabble.com/Routes-with-wildcards-missing-controller-errors-td1263632.html

編集:もう少し試行錯誤した後、私はこれを試しました:

Router::connect('/:site/:controller/:action/*', array('plugin' => 'forum'));

そしてそれは動作します。誰かがこれを説明できますか?

4

1 に答える 1

1

http://api.cakephp.org/class/router#method-Routerconnectのドキュメントは、これを説明するのに非常に役立ちます。

これまでに行ったことは、カスタムパラメータを作成することです。Cakeは配列を使用してパラメーターを追跡し、どのコントローラー、アクション、およびその他のパラメーターが渡されたかを追跡します。ルーターは、スラッシュ(/)が3つ付いているURLを$param['site']$param['controller']およびに変換します$param['action']

コントローラから、を使用して:siteの値を取得できます$this->params['site']

于 2011-06-19T02:08:15.060 に答える