最近、業務でCakePHPをいじっているのですが、jsファイルをPHPで生成したかったので、その方法を下記します。
一般的には拡張子をphpのままでjavascriptの内容を吐き出すという方法(下記URL参照)があります。
http://hal-lab.cocolog-nifty.com/blog/2009/03/cssjsphp-bfe1.html
しかしながら、CakePHPのjavascriptヘルパーでそのファイルを指定しようとすると、拡張子がjsに自動変換されてしまいます。
≪テンプレート≫
<?php echo $javascript->link('hoge.php', false);?>
↓
<script type="text/javascript" src="/js/hoge.php.js"></script>
どう解決しようか、javascriptヘルパーを継承したクラスでも作ってオーバーライドでもしようかと思いましたが、CakePHPのバージョンアップ等を考えると、スマートじゃないと・・・
そこで、下記のようにroutes.phpで、jsファイルパスでアクセスしたら、無理やりコントローラに渡す方法にしてみました。
≪routes.php≫
Router::connect('/js/hoge.js', array('controller' => 'hogecons', 'action' => 'hoge'));
≪controller.php≫
class HogeconsController extends AppController { var function ui_config() { $this->set('hoge', $hoge); $this->layout = 'ajax'; } }
設計思想に反しているかもしれませんが、とりあえず動いたので良しとします。
Please comment with your real name using good manners.