Ethna組込みのSmartyプラグイン
書いた人: いちい
概要
EthnaでSmartyを使う場合に利用できる、組込みの便利なプラグイン(modfier, function, block)についての説明です。
基本的に Ethna_ViewClass で提供されているヘルパ関数や、 php の組込み関数、 Ethna_Util の関数などを呼び出すラッパーになっています。
modifier
{...|number_format}
number_format()関数のラッパーです。
- 入力
{"12345"|number_format}
- 出力
12,345
{...|strftime}
strftime()関数のラッパーです。
- 入力
{"2004/01/01 01:01:01"|strftime:"%Y年%m月%d日"}
- 出力
2004年01月01日
{...|count}
(配列にたいする) count() 関数のラッパーです。
{$array|count}
{...|join}
配列を連結して文字列にする join() 関数のラッパーです。
{$str_array|join:","}
{...|filter}
連想配列のリストから、指定されたキーの値だけを取り出して配列を再構成します。
- 入力
$smarty->assign("array", array( array("foo" => 1, "bar" => 4), array("foo" => 2, "bar" => 5), array("foo" => 3, "bar" => 6), ));
{$array|filter:"foo"|join:","}
- 出力
1,2,3
{...|explode}
文字列に対する explode() 関数のラッパーです。 第一引数の文字列を第二引数の文字列により分割し、配列にします。
- 入力
$smarty->assign("1,2,3", ",");
{$array|explode:","}
- 出力
array(1, 2, 3)
{...|unique}
配列に対する unique() 関数のラッパーです。第2引数にキーをあたえることで、 filter を同時に行うことができます。
{$array|unique:"foo"}
{...|wordwrap_i18n}
utf-8のみ対応 指定された文字数で文字列をワードラップします。
- 入力
----12345678---- {"あいうaえaおaかきaaaくけこ"|wordrap_i18n:8:"\n":4}
- 出力
----12345678---- あいうa えaおaか きaaaく けこ
- 引数
- ワードラップする文字数 (必須)
- 改行文字
- 半角スペースでのインデント数
{...|truncate_i18n}
文字列を指定された文字数で切り詰めます。 mb_strimwidth() を用いています。
- 入力
{"日本語です"|truncate_i18n:5:"..."}
- 出力
日本...
- 引数
- 切り詰める文字数
- 切り詰めた後に付加する文字列
{...|i18n}
i18nメッセージを取得します。 Ethna_I18N クラスを利用します。
- 入力
{"english"|i18n}
- 出力(例)
英語
{...|checkbox}, {...|select}, {...|form_value}
詳しくはAPIドキュメントをご覧ください。多くの場合、もっと簡単な代替手段があります。
function
{message}
指定されたフォームにエラーがある場合にメッセージを出力します。エラーがないときはなにも出力されません。
- 入力
<input type="text" name="foo">{message name="foo"}
- 出力
<input type="text" name="foo">fooを入力してください
- 引数
- アクションフォームで定義したフォーム名を指定します。
{url}
Ethna_UrlHandler を使って、アクション名とパラメータからURLを生成します。UrlHandlerについての説明についてはEthna_UrlHandlerを参照してください。
以下では、アプリの設定ファイル (app-ini.php) で 'url' => 'http://example.jp/index.php' が設定され、 /show/article/3/2 で show_article アクションにパラメータ chapter=3, sectio=2 を与えるものとします。
- 入力
{url action="show_article" chapter="3" section="1" style="plain" scheme="https" anchor="subsection2"}
- 出力
https://example.jp/index.php/show/article/3/2?style=plain#subsection2
- 引数
- action: UrlHandlerに渡すアクション名を指定します。(必須)
- scheme: 'url' に http:// などの scheme が指定されていた場合に、それを置き換えることができます。
- anchor: '#anchor' 形式のアンカーを付加します。
- 上にあげた以外のパラメータ: GETパラメータとしてURLに付加されます。
{form_name}
アクションフォームで定義された、フォームの表示名を取得します。Ethna_ViewClassのgetFormName()を用いています。
var $form = array( 'text' => array( 'type' => VAR_TYPE_TEXT, 'name' => 'テキスト', ...
- 入力
{form_name name="text" action="foo"}
- 出力
テキスト
- 引数
- name: フォーム名(連想配列$formのキー)を指定します。(必須)
- action: フォーム定義を取得するアクションを指定します。省略時の動作についてはフォームヘルパを参照してください。
{form_submit}
フォームのsubmitボタンを生成します。Ethna_ViewClassのgetFormSubmit()を用いています。詳しくはEthna_ViewClassを参照してください。
- 入力
{form_submit value="送信"}
- 出力
[送信] (実際はブラウザのボタン)
- 引数
- すべて getFormSubmit() にそのまま渡されます。
{form_input}
Ethna_ViewClassのgetFormInput() (および _getFormInput_*()) を使い、アクションフォームのフォーム定義から、自動的にそのフォームを送信するためのHTMLタグを生成します。
詳細はフォームヘルパを参照してください。
{csrfid}
CSRF対策のためのIDをhiddenタグもしくはGETのリクエストパラメータとして出力します。
- 入力
{csrfid} <a href="index.php?action_do_something=true&{csrfid type="get"}>
- 出力
<input type="hidden" name="csrfid" value="a0f24f75e...e48864d3e"> <a href="index.php?action_do_something=true&csrfid=a0f24f75e...e48864d3e">
{is_error}, {uniqid}, {select}, {checkbox_list}
詳しくはAPIドキュメントをご覧ください。多くの場合、もっと簡単な代替手段があります。
block
{form}...{/form}
詳細はフォームヘルパを参照してください。