- 2009/02/14 13:37
- CakePHP
CakePHPのヘルパーには、Cacheヘルパーが付いていて、アクション毎に管理できたりと便利なんですが、アクションが日本語だったときに困ります。
たとえば、
http://hogehoge/index/%E3%82%AD%E3%83%BC%E3/2
などの時です。
ファイルをapp/tmp/cache/viewsには保存してくれるのですが、このままだと読み出してくれません。
出力するファイル名も日本語の名前になってしまうからです。
たとえば、以下のように保存それます。
index_日本語_2.php
というように。
その対策方法としては、ファイル名をURLエンコードすることです。
具体的には、「cake/libs/helpers/cache.php」を「app/views/helpers/cache.php」にコピーします。
そしてコピーしたファイルの以下の部分を変更します。
$cache = $cache. '.php';
の部分を、
$cache = urlencode($cache) . '.php';
に変更します。
すると、キャッシュフォルダには、
searches_%B3_%AA_%A9_%AF_standard_2.php
という様なファイルで保存され、きちんとキャッシュファイルとして読み込んでくれます。
後で分かったことですが、このやり方でもダメなようです。Cacheヘルパーがマルチバイトに対応していない模様です。詳しくはこちらのスレをごらんください。
ちなみに、そのコントローラーのすべてのアクションでビューキャッシュをしたい場合、以下のように記述します。
var $helpers = array ('Html','Form','Cache');
var $cacheAction = '+1 day';
便利ですね~
参考URL
コメント:0
トラックバック:0
- この記事のトラックバック URL
- http://www.multiburst.net/sometime-php/2009/02/cakephp-viewcache-action-name-japanese/trackback/
- トラックバックの送信元リスト
- [CakePHP]ビューキャッシュでアクション名が日本語だったときの対処法 - Sometime PHP より





