Cake2.0では、
http://example.com/hoge/index
http://example.com/hoge/huga/1
に対応するコントローラは以下のように作ります。
`
<?php
App::uses('AppController', 'Controller');
class HogeController extends AppController {
public function index() {
}
public function huga($id) {
}
}
`
階層を持たせたい場合の一番簡単な方法は以下のようなクラスを作ります。
`
<?php
App::uses('AppController', 'Controller');
class FugaHogeController extends AppController {
public function huga($id) {
}
}
`
http://example.com/fuga_hoge/huga/1 でアクセスします。_でネストが表せるわけです。
ディレクトリを分けたければ、複数のファイルアクセスが発生しますがbootstrap.phpに
`
App::build(array(
"Controller"=>array(
ROOT.DS.APP_DIR.DS.'Controller'.DS.'fuga'.DS,
ROOT.DS.APP_DIR.DS.'Controller'.DS,
),
));
`
と書き加えることで
Controller/FugaHogeController.phpを
Controller/fuga/FugaHogeController.phpにおく事が出来ます。
_でネストを表さずに/でネストを表したい場合、例えば
http://example.com/fuga/hoge/huga/1
で、FugaHogeControllerにアクセスさせたいような場合は、ルーティングの設定に以下のような設定を追加します。
`
Router::connect('/fuga/hoge/*', array('controller' => 'fuga_hoge'));
`
この方法だと、コントローラを追加するごとにルーターの設定が必要です。
一度に複数のコントローラを設定したい場合は、カスタムルーティングクラスを使うか、Pluginを使います。Pluginを使えば、同じ機能を1ディレクトリにまとめて書く事が出来ます。
http://book.cakephp.org/2.0/ja/plugins.html
プラグインは例えば、以下のようにルーティングして
`
Router::connect('/huga/*', array('plugin'=>'Huga'));
`
以下のファイルを作ります。
`
<?php
// app/Plugin/Huga/Controller/HugaAppController.php
class HugaAppController extends AppController {
}
`
`
<?php
// app/Plugin/Huga/Controller/HogeController.php
class HogeController extends HugaAppController {
public function index() {
}
public function index2() {
}
}
`
`
<?php // app/Plugin/Huga/View/Hoge/index.ctp ?>
<?php echo "test" ?>
`
`
<?php // app/Plugin/Huga/View/Hoge/index2.ctp ?>
<?php echo "test2" ?>
`
http://example.com/huga/hoge/ http://example.com/huga/hoge/index http://example.com/huga/hoge/index2 のURLが有効になるはずです。
また、プラグイン内にAController.phpを作れば、http://example.com/huga/a/ でアクセス出来るでしょう。
カスタムルータークラスも作れば出来ると思いますが、作った事がないのでやってみてください。