このマニュアルはSmartyのものです。セキュリティなどの問題でRCMSでは利用できないものもありますので、ご注意ください。
変数の修飾子第 5章変数の修飾子
変数の修飾子は、
変数 や
カスタム関数
や文字列を修飾して出力することができます。修飾子を適用するには、
変数名の後に | (パイプ) と修飾子の名前を指定します。
また、修飾子はその動作に影響を及ぼす追加のパラメータを受け入れる場合もあります。
そのパラメータは修飾子の後に続き、: (コロン) によって区切られます。
また、すべての PHP 関数は、暗黙的に修飾子として使用でき
(あとで説明します)、修飾子は 組み合わせる
こともできます。
例 5-1. 修飾子の例 {* 変数に修飾子を適用 *}
{$title|upper}
{* パラメータを持つ修飾子 *}
{$title|truncate:40:'...'}
{* テンプレート関数のパラメータに修飾子を適用 *}
{html_table loop=$myvar|upper}
{* パラメータ付き *}
{html_table loop=$myvar|truncate:40:'...'}
{* リテラル文字列に修飾子を適用 *}
{'foobar'|upper}
{* 現在の日付を整形するために date_format を使用 *}
{$smarty.now|date_format:"%Y/%m/%d"}
{* カスタム関数に修飾子を適用 *}
{mailto|upper address='smarty@example.com'}
{* php の str_repeat を使用 *}
{'='|str_repeat:80}
{* php の count *}
{$myArray|@count}
{* php の shuffle をサーバの ip に対して使用 *}
{$smarty.server.SERVER_ADDR|shuffle}
(* 配列全体の大文字変換と切り詰め *}
<select name="name_id">
{html_options output=$myArray|upper|truncate:20}
</select> |
|
配列に対して修飾子を用いた場合は、その配列に格納された全ての値に影響を及ぼします。
配列全体を1つの値として作用させるには修飾子の先頭に @
記号をつける必要があります。
例: {$articleTitle|@count} - これは、
配列 $articleTitle の要素数を、php の
count()
関数を修飾子として用いて出力します。
修飾子は $plugins_dir
から自動的に読み込むか、明示的に register_modifier()
関数で登録します。2つ目の方法は、PHP スクリプトと Smarty テンプレートで
関数を共有する場合などに有用です。
先ほどの例で示したように、全ての PHP 関数は暗黙で修飾子として使用する事ができます。
しかし、修飾子としてPHP関数を使うには2つの小さな落とし穴があります。
第1に、 たまに関数のパラメータの順序が望ましいものではなくります。
$foo を
{"%2.f"|sprintf:$foo} でフォーマットすることはできますが、
Smarty が提供する方式である {$foo|string_format:"%2.f"}
のほうがより直感的です。
第2に、
$security が有効な場合、
修飾子として使用される全ての PHP 関数は
$security_settings 配列の
MODIFIER_FUNCS 要素で
信頼できるものとして定義される必要があります。
register_modifier()、
修飾子の連結
および
プラグインによる Smarty の拡張
も参照してください。
capitalize
変数内の全ての単語の先頭を大文字で開始します。
PHP の
ucfirst() 関数と似ています。
例 5-2. capitalize
<?php
$smarty->assign('articleTitle', 'next x-men film, x3, delayed.');
?>
|
テンプレート
{$articleTitle}
{$articleTitle|capitalize}
{$articleTitle|capitalize:true} |
出力
next x-men film, x3, delayed.
Next X-Men Film, x3, Delayed.
Next X-Men Film, X3, Delayed. |
|
lower
および
upper
も参照してください。