以前依頼を受けた案件でこんなのがありました。
- 現在稼働中のサイトに機能(ページ)追加
- 実装方法はお任せ(既存のライブラリ等は使用しなくて良い)
- 但し、Smartyは必須
- あとSmartyテンプレート、PHPの内部エンコーディングはSJIS
仕様自体はそれほど複雑で無いのでDBライブラリ(PEAR::DBとか)+Smaryでゴリゴリ書いても良いのですが、せっかくの機会なのでCakePHPを使ってみる事にしました。
DocumentRoot以下には既に稼働中のページがあるので、イメージとしてはそこにPageControllerを置き、そこからCakePHPを呼び出すといった感じです。
(CakePHP自体を追加ディレクトリに入れるという力業もあるのですが、ファイル構成が複雑になって、メンテナンスされる方が困りそうなのと個人的にもDocumentRoot以下にライブラリがあるのは抵抗があるのでそれはやめました。。。)
構成としてはこんな感じです。
[cake] <-- CakePHPを置く
+ [app]
+ [cake]
+ [vendors]
[DocumentRoot]
+ [new]
+ index.php
+ add.php
+ update.php
+ delete.php
+ [new2]
+ index.php
+ add.php
+ update.php
+ delete.php
DocumentRoot以下では単純にCakeのappを呼びます。
<?php
$_GET['url'] = '/new/index';
// cake/をinclude_pathに入れたら
include('app/webroot/index.php');
// cake/をinclude_pathに入れないなら
//include('../../cake/app/webroot/index.php');
?>
$_GET['url']に渡すパスを変えれば任意のコントローラ・アクションが呼べます。
この方法ならブラウザから見るパスとCake用のパスを異なるものにできるので小さな案件ならわりと使えるシーンはあるのではないかと思います。(突然「URLを変えてくれ」とかありません?)
Smarty関係も小ネタがあるので、それはまた書きたいと思います。
# 昨今のWebフレームワークはFrontControllerが主流ですが、PageControllerももうちょっと見直されても良いかなと思ったり。
トラックバック:0
- このエントリーのトラックバックURL
- /blog/2007/03/cakephp_pagecontroller.html/trackback
- Listed below are links to weblogs that reference
- CakePHPをWebサイトの一部で使う from Shin x blog

