ここは以前の ethna.jp サイトを表示したものです。ここにあるドキュメントはバージョン2.6以降更新されません。
最新のドキュメントは 現在のethna.jp を閲覧してください。現ドキュメントが整備されるまでは、ここを閲覧してください。
Ethna > ドキュメント > 開発マニュアル > ビュー定義 > smartyを使ったviewのレンダリング > Ethna組込みのSmartyプラグイン

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}

詳細はフォームヘルパを参照してください。