変数の修飾子は、 変数 や カスタム関数 や文字列を修飾して出力することができます。修飾子を適用するには、 変数名の後に | (パイプ) と修飾子の名前を指定します。 また、修飾子はその動作に影響を及ぼす追加のパラメータを受け入れる場合もあります。 そのパラメータは修飾子の後に続き、: (コロン) によって区切られます。 また、すべての PHP 関数は、暗黙的に修飾子として使用でき (あとで説明します)、修飾子は 組み合わせる こともできます。
Example 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} (* 配列全体の大文字変換と切り詰め *} <select name="name_id"> {html_options output=$my_array|upper|truncate:20} </select>
- 修飾子は、配列やオブジェクトを含む任意の型の変数に適用することができます。
- 修飾子は $plugins_dir から自動的に読み込むか、明示的に registerPlugin() 関数で登録します。2つ目の方法は、PHP スクリプトと Smarty テンプレートで 関数を共有する場合などに有用です。
- 先ほどの例で示したように、全ての PHP 関数は暗黙で修飾子として使用する事ができます。 しかし、修飾子としてPHP関数を使うには2つの小さな落とし穴があります。
- 第1に、 たまに関数のパラメータの順序が望ましいものではなくります。 $foo を {“%2.f”|sprintf:$foo} でフォーマットすることはできますが、 Smarty が提供する方式である {$foo|string_format:”%2.f”} のほうがより直感的です
- 第2に、セキュリティが有効な場合、 修飾子として使用される全ての PHP 関数は セキュリティポリシーの $modifiers プロパティで信頼できるものとして定義される必要があります。 詳細は セキュリティ の節を参照ください。