Skip to content

Latest commit

 

History

History
272 lines (160 loc) · 6.82 KB

view-smarty-plugin.md

File metadata and controls

272 lines (160 loc) · 6.82 KB

Ethna組込みのSmartyプラグイン

  • Ethna組込みのSmartyプラグイン
    • 概要
    • modifier
      • {...|number_format}
      • {...|strftime}
      • {...|count}
      • {...|join}
      • {...|filter}
      • {...|explode}
      • {...|unique}
      • {...|wordwrap_i18n}
      • {...|truncate_i18n}
      • {...|i18n}
      • {...|checkbox}, {...|select}, {...|form_value}
    • function
      • {message}
      • {url}
      • {form_name}
      • {form_submit}
      • {form_input}
      • {csrfid}
      • {is_error}, {uniqid}, {select}, {checkbox_list}
    • block
      • {form}...{/form}

書いた人: いちい

概要

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}

指定されたフォームにエラーがある場合にメッセージを出力します。エラーがないときはなにも出力されません。

  • 入力

    {message 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"}>

  • 出力

{is_error}, {uniqid}, {select}, {checkbox_list}

詳しくはAPIドキュメントをご覧ください。多くの場合、もっと簡単な代替手段があります。

block

{form}...{/form}

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