CakePHP 2.xを複数のindex.phpから呼び出して使う方法

どういう事かと言うと、例えば既存の静的サイトがあって、そこでCakePHP 2.xで作った何かを流用したいと考えた場合のひとつの解決方法です。

 

まず、既存のサイトの任意の場所にディレクトリを作って下さい。ここではcontactという名前で作ったことにします。

contactの中にapp/webrootの.htaccessとindex.phpをコピーして下さい。

index.phpをエディタで開いて定数ROOTが正しくappやlibがあるディレクトリを指すように修正して下さい。

これで、contactにアクセスしたらCakePHPの何かの画面が表示されると思います。contactな機能しか使わない、またはURLがcontact/calendar/editとかなっても構わないのであれば、これ以上やることはありません。

 

もし、calendarは別がいいなぁって場合は、先ほどと同様にディレクトリを作って.htaccessとindex.phpをコピーして、ROOTを修正し、今度はAPP_DIRも修正して下さい。例えばapp_calendarなどと設定します。

もちろんこの時点ではそんなディレクトリありませんので、calendarにアクセスしてもエラーとなります。そこでappディレクトリを丸ごとコピーして名前をapp_calendarに変更して下さい。これでもう一度アクセスしたら先ほどcontactにアクセスしたときと同じ画面が表示されたと思います。

あとはcontactとcalendarそれぞれappとapp_calendarの中のConfig/routes.phpを修正して呼び出すコントローラーを設定して下さい。これで複数のindex.phpからそれぞれ別の機能にアクセスできます。

同じ中身のディレクトリが複数存在するのが難点ですが、既存のサイトはそのままでCakePHPを使いたい場合には面倒が少ないかなと思います。appディレクトリの複製などせずに済む方法がありましたらどなたか教えて下さい。