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