CakePHPは、app/webroot以下のファイルはそのまま表示するような実装になっていて、静的ページしかないディレクトリなんかはapp/webroot以下に配置すると楽だったりする。
特にcssやimg、jsなどもそのまま配置されているので、Dispacherを通った若干わかりにくいディレクトリ構成から解放される。
で、それを利用して「静的ページならapp/webroot以下にどんどん配置してくださいねー」とデザイナーさんと協業することがあるのだけれども、結局、静的ページでも「メニュー部分は統一したい」「ログイン情報を利用した表示をしたい」といった要求が出てくることが多い。ここを素のPHPで書くこともできるんだろうけども、せっかくCakePHP側にその機能があるので再利用したい。
というわけで、若干バッドノウハウながらも、app/webroot以下のPHPファイルからCakePHPのViewの機能を使えるようにするライブラリを書いてみた。
使い方はREADME.mdを参考にしてもらうとして、内部のコードが本当に微妙過ぎる。
app/webroot/index.phpは読み込みたいけれどもDispacherは動かしたくないので、
<?php $_GET['url'] = 'favicon.ico';
なんてことをしている。本当、微妙。
軽く試してみた感じでは、HtmlHelperやSessionHelperは普通に動いているっぽい。$view->element()も動く。
何か他によい解決方法があったら教えてください。