PHPマニュアル/PEARマニュアル | ユーザフォーラムで議論/質問 | マニュアル検索 | ハイライト | ハイライトオフ | ポータル | php spot

Structures_DataGrid_Renderer_Smarty | JavaScript入門&応用&リファレンスなら「JavaScriptist」

  

Structures_DataGrid_Renderer_Smarty

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

サポートする操作モード

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

このドライバがサポートする操作モード
モード サポートしている?
コンテナのサポート yes
出力バッファリング yes
ダイレクトレンダリング no
ストリーミング no
オブジェクトの永続化 no

オプション

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

このドライバのオプション
オプション 説明 デフォルト値
associative bool デフォルトでは、カラムセットやレコードは数値添字配列となります。 このオプションを true に設定すると、配列のキーがフィールド名となります。 false
buildFooter bool フッタを作成するかどうか。 true
buildHeader bool ヘッダを作成するかどうか。 true
columnAttributes array カラムのセルの属性。 array(fieldName => array(attribute => value, ...) ...) 形式の配列となります。 このオプションは、XML/HTML ベースのドライバでのみ使用します。 array()
convertEntities bool html エンティティを変換するかどうか。 htmlspecialchars() をコールします。 true
defaultCellValue string 空のセルに表示するデフォルトの値。 null
defaultColumnValues array カラムごとに指定するセルのデフォルト値。 array(fieldName => value, ...) 形式の配列となります。 array()
encoding string 内容のエンコーディング。mbstring 拡張モジュールが使用可能な場合、 デフォルト値は mb_internal_encoding() から取得します。 それ以外の場合のデフォルト値は ISO-8859-1 となります。 'ISO-8859-1'
excludeVars array 作成される HTTP クエリから取り除く変数。 array()
extraVars array 作成される HTTP クエリに追加される変数。 array()
fillWithEmptyRows bool すべてのページで行数が同じになるようにするかどうか。 false
hideColumnLinks array デフォルトでは、すべてのカラムで並べ替えリンクが有効になります。 このオプションを使用すると、指定したカラムの並べ替えリンクを無効にできます。 array(fieldName, ...) 形式の配列で指定します。 このオプションは、並べ替えをサポートしているドライバでのみ有効です。 array()
numberAlign bool 数値を右詰めにするかどうか。 true
onMove string ユーザがページを移動したりデータをソートしたりしたときの onclick/onsubmit イベント発生時にコールする Javascript 関数の名前。 この関数は、オブジェクトを引数として受け取ります。 このオブジェクトの形式は { page: <page>, sort: [{field: <field>, direction: <direction>}, ...], data: <user_data> } のようになります。このオプションを指定しても、 href 属性は削除されないことに注意しましょう。 href を無効にしたい場合 (AJAX など……) は、ハンドラ関数内で false を返すようにしなければなりません。 null
onMoveData string onMove に渡す引数のオブジェクトの、"data" に渡すデータ。JSON 形式のシリアル化は行わず、 そのままの形で "data" 属性に渡されます。 クォートやスラッシュなどを追加する処理は、自分で行ってください。 ''
selfPath string 並べ替えおよびページ処理に使用するパス。 $_SERVER['PHP_SELF']
sortingResetsPaging bool 並べ替えの HTTP クエリで、ページをリセットするかどうか。 true
varPrefix string このドライバが割り当てる Smarty 変数や関数用の接頭辞。 Structure_DataGrid::setRequestPrefix() と組み合わせて使用することにより、 ひとつのページに複数のグリッドを表示できるようになります。 ''

全般的な注意

このドライバを使用するには、 http://smarty.php.net で入手できる Smarty テンプレートが必要です。

このドライバは render() メソッドをサポートしていません。

fill() で Smarty オブジェクトを代入します。 これは、変数を代入して Smarty 関数 {getPaging} を登録します。 Smarty オブジェクトを設定したあとに、あなたが自分で Smarty::display() をコールします。

あるいは、getOutput() を使用するとすべての変数を PHP の配列として取得できます。 これを使用して、お好みの方法で Smarty インスタンスに変数を設定することもできます。

このドライバは、次の Smarty 変数を代入します。

- $columnSet:       カラム設定の配列。
                    構造は次のとおり。
                         array (
                             0 => array (
                                 'name'       => フィールド名,
                                 'label'      => カラムのラベル,
                                 'link'       => 並べ替え用のリンク,
                                 'attributes' => 属性文字列,
                                 'direction'  => 'ASC'、'DESC' あるいは '',
                                 'onclick'    => onMove 関数
                             ),
                             ...
                         )
- $recordSet:       レコードの値の配列。
- $currentPage:     現在のページ (最初のページは 1)。
- $nextPage:        次のページ。
- $previousPage:    前のページ。
- $recordLimit:     ページ単位の行数。
- $pagesNum:        ページ数。
- $columnsNum:      カラム数。
- $recordsNum:      現在のページのレコード数。
- $totalRecordsNum: 総レコード数。
- $firstRecord:     最初のレコード番号 (1 から数え始める)。
- $lastRecord:      最後のレコード番号 (1 から数え始める)。
- $currentSort:     カラム名および並べ替えの方向の配列。
- $datagrid:        {getPaging} に渡す参照。

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

{getPaging} には、オプションのパラメータ "datagrid" を渡すことができます。これは $datagrid で指定します。 これを使用すると任意のデータグリッドに関するページ処理をすることができます (ひとつのページに複数のグリッドを配置する際に便利です)。

オブジェクトの記録 : このドライバは、渡されたオブジェクトのレコードを記録します。 つまり、データソースから渡されるレコードが連想配列ではなくオブジェクトだった場合、 そのプロパティやメソッドを Smarty テンプレートから直接利用できるようになります。 たとえば {$recordSet[col]->getSomeInformation()} のようにします。

Smarty レンダラの使用法

<?php
require_once 'Structures/DataGrid.php';    
require_once 
'Smarty.class.php';

$datagrid =& new Structures_DataGrid(10);
$options = array('dsn' => 'mysql://username@localhost/mydatabase');
$datagrid->bind("SELECT * FROM mytable"$options);

$smarty = new Smarty();
$datagrid->fill($smarty);
$smarty->display('smarty-simple.tpl');
?>

並べ替えとページ処理を行う Smarty テンプレート (smarty-simple.tpl)

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

<
p>Showing records {$firstRecordto {$lastRecord
from {$totalRecordsNum}, page {$currentPageof {$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>
                    <!-- 
現在の並べ替え方向を矢印で表示します -->
                    {if 
$columnSet[col].direction == "ASC"}
                      &
darr;
                    {elseif 
$columnSet[col].direction == "DESC"}
                      &
uarr;
                    {/if}
                {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>
?>
忘却曲線を使ってこの知識を確実に記憶に残す

フォーラムで「Structures_DataGrid_Renderer_Smarty」について話す
各種マニュアル: PHPマニュアル | PEARマニュアル | Smarty(英語)マニュアル | PHP-GTKマニュアル | Structures_DataGrid_Renderer_Smarty」をGoogle検索
copyright © 1997-2024 PHP ドキュメント作成グループ(ライセンス). provided by php spot. マニュアル: