確認画面等で入力値を表示するのにHtmlHelper#tagValueを使っています。
これは内部でHTMLタグをエスケープしてくれるので重宝していたのですが、1.1.15.5144から、このメソッドにエスケープするか否かを表すフラグが追加されました。
[cake/libs/view/helpers/html.php]
<?php function tagValue($fieldName, $escape = false) { ?>
困った事にデフォルトではfalseになっているので、従来の[$html->tagValue(‘Foo/bar’);]のような使い方をしているとHTMLタグがそのまま出力されてしまいます。1.1.15.5144以降(昨日リリースされた1.1.16.5421も含む)でHTMLタグをエスケープするには以下のように第2引数にtrueを指定しなければなりません。
// tagValueでHTMLタグをエスケープ <?php echo $html->tagValue('Foo/bar', true); // もしくはh()で囲む <?php echo h($html->tagValue('Foo/bar')) ?>;
1.1.14.4797以前から1.1.15.5144以降へバージョンアップする際はくれぐれもご用心を。
ちなみに1.2.0.5147ではtagValueがdeprecatedになっており、代わりにvalueメソッドを使うようになるようです。
- Newer: Web API実践リファレンスブック
- Older: CentOS yumでGPGキーエラー
トラックバック:1
- このエントリーのトラックバックURL
- /blog/2007/07/cakephp_11155144_tagvalue.html/trackback
- Listed below are links to weblogs that reference
- CakePHP 1.1.15.5144以降はHtmlHelper#tagValueに注意 from Shin x blog
- pingback from CakePHP HtmlHelper::tagValue のHTMLエスケープ処理 | Sun Limited Mt. 08-04-01 (火) 10:52
-
[…] ただ、 CakePHP 1.1.15.5144以降はHtmlHelper#tagValueに注意 | Shin x blog に書かれているように、CakePHP のバージョン1.1.15.5144 からエスケープするかのフラグが追加されたようです。 […]