ホーム > CakePHP > [CakePHP]ビューキャッシュでアクション名が日本語だったときの対処法

[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 より

ホーム > CakePHP > [CakePHP]ビューキャッシュでアクション名が日本語だったときの対処法

Subscribe This Blog
Subscribe This Blog
FeedBurner

Search
Categories
Tag Cloud
Twitter Counter
Archives
My Other Blogs
Translator
Japanese flagEnglish flag

ページの上部に戻る