Structures_DataGrid_Renderer_Smarty

Structures_DataGrid_Renderer_Smarty -- Smarty レンダリングドライバ

サポートする操作モード

このドライバは次の操作モードをサポートしています。

表 57-1このドライバがサポートする操作モード

モードサポートしている?
コンテナのサポートyes
出力バッファリングno
ダイレクトレンダリングno
ストリーミングno

オプション

このドライバは、以下のオプションを受け付けます。

表 57-2このドライバのオプション

オプション説明デフォルト値
buildFooterboolフッタを作成するかどうか。true
buildHeaderboolヘッダを作成するかどうか。true
columnAttributesarray カラムのセルの属性。 array(fieldName => array(attribute => value, ...) ...) 形式の配列となります。 このオプションは、XML/HTML ベースのドライバでのみ使用します。 array()
convertEntitiesbool html エンティティを変換するかどうか。 htmlspecialchars() をコールします。 true
defaultCellValuestring空のセルに表示するデフォルトの値。null
defaultColumnValuesarray カラムごとに指定するセルのデフォルト値。 array(fieldName => value, ...) 形式の配列となります。 array()
encodingstring 内容のエンコーディング。mbstring 拡張モジュールが使用可能な場合、 デフォルト値は mb_internal_encoding() から取得します。 それ以外の場合のデフォルト値は ISO-8859-1 となります。 'ISO-8859-1'
excludeVarsarray作成される HTTP クエリから取り除く変数。array()
extraVarsarray作成される HTTP クエリに追加される変数。array()
fillWithEmptyRowsboolすべてのページで行数が同じになるようにするかどうか。false
hideColumnLinksarray デフォルトでは、すべてのカラムで並べ替えリンクが有効になります。 このオプションを使用すると、指定したカラムの並べ替えリンクを無効にできます。 array(fieldName, ...) 形式の配列で指定します。 このオプションは、並べ替えをサポートしているドライバでのみ有効です。 array()
numberAlignbool数値を右詰めにするかどうか。true
selfPathstring並べ替えおよびページ処理に使用するパス。$_SERVER['PHP_SELF']
sortingResetsPagingbool並べ替えの HTTP クエリで、ページをリセットするかどうか。true

全般的な注意

このドライバは render() メソッドをサポートしていません。Smarty オブジェクトを "fill" することだけが可能で、これは Smarty::assign() および Smarty::register_function() によって行われます。

Smarty オブジェクトを設定したあとに、あなたが自分で Smarty::display() をコールします。

このドライバは、次の Smarty 変数を代入します。 - $columnSet: カラム設定の配列。 構造は次のとおり。 array ( 0 => array ( 'name' => フィールド名, 'label' => カラムのラベル, 'link' => 並べ替え用のリンク, 'attributes' => 属性文字列, ), ... ) - $recordSet: レコードの値の配列。 - $currentPage: 現在のページ (最初のページは 1)。 - $recordLimit: ページ単位の行数。 - $pagesNum: ページ数。 - $columnsNum: カラム数。 - $recordsNum: 現在のページのレコード数。 - $totalRecordsNum: 総レコード数。 - $firstRecord: 最初のレコード番号 (1 から数え始める)。 - $lastRecord: 最後のレコード番号 (1 から数え始める)。 - $currentSort: カラム名および並べ替えの方向の配列。

このドライバは、getPaging という名前の Smarty カスタム関数も登録します。 これは Smarty テンプレート内で {getPaging} としてコール可能で、 ページ処理用のリンクを表示します。この関数は、Pager::factory() と同じ形式のオプションをパラメータとして受け付けます。

並べ替えおよびページ処理を含むテンプレートの例です。

<!-- カスタム関数 getPaging でページ移動リンクを表示します -->
{getPaging prevImg="<<" nextImg=">>" separator=" | " delta="5"}

<p>Showing records {$firstRecord} to {$lastRecord}
from {$totalRecordsNum}, page {$currentPage} of {$pagesNum}</p>

<table cellspacing="0">
    <!-- ヘッダを作成します -->
    <tr>
        {section name=col loop=$columnSet}
            <th {$columnSet[col].attributes}>
                <!-- カラムが並べ替え可能かどうかを調べます -->
                {if $columnSet[col].link != ""}
                    <a href="{$columnSet[col].link}">{$columnSet[col].label}</a>
                {else}
                    {$columnSet[col].label}
                {/if}
            </th>
        {/section}
    </tr>

    <!-- 本体を作成します -->
    {section name=row loop=$recordSet}
        <tr {if $smarty.section.row.iteration is even}bgcolor="#EEEEEE"{/if}>
            {section name=col loop=$recordSet[row]}
                <td {$columnSet[col].attributes}>{$recordSet[row][col]}</td>
            {/section}
        </tr>
    {/section}
</table>

このテンプレートを、次のようなコードとともに使用します。

$smarty = new Smarty(...);
$datagrid =& new Structures_DataGrid(...);
$datagrid->bind(...);
$datagrid->fill($smarty);
$smarty->display(PATH TO YOUR TEMPLATE);

レンタルサーバー

SNS