このドライバは次の操作モードをサポートしています。
表 62-1このドライバがサポートする操作モード
モード | サポートしている? |
---|---|
コンテナのサポート | yes |
出力バッファリング | yes |
ダイレクトレンダリング | no |
ストリーミング | no |
オブジェクトの永続化 | no |
このドライバは、以下のオプションを受け付けます。
表 62-2このドライバのオプション
オプション | 型 | 説明 | デフォルト値 |
---|---|---|---|
assocColumns | bool | カラムヘッダを連想配列として作成するかどうか。 | true |
buildFooter | bool | フッタを作成するかどうか。 | true |
buildHeader | bool | ヘッダを作成するかどうか。 | true |
columnAttributes | array | カラムのセルの属性。 array(fieldName => array(attribute => value, ...) ...) 形式の配列となります。 このオプションは、XML/HTML ベースのドライバでのみ使用します。 | array() |
columnNames | array | カラムヘッダで使用するカラム名のセット。 | 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' |
evenRowAttribute | string | 偶数行に使用する css クラス。 | 'even' |
excludeVars | array | 作成される HTTP クエリから取り除く変数。 | array() |
extraVars | array | 作成される HTTP クエリに追加される変数。 | array() |
fillWithEmptyRows | bool | すべてのページで行数が同じになるようにするかどうか。 | false |
formatter | array | カラムヘッダの formatter メソッドで使用するコールバックの配列。 | array($this,'defaultHeaderFormatter') |
hideColumnLinks | array | デフォルトでは、すべてのカラムで並べ替えリンクが有効になります。 このオプションを使用すると、指定したカラムの並べ替えリンクを無効にできます。 array(fieldName, ...) 形式の配列で指定します。 このオプションは、並べ替えをサポートしているドライバでのみ有効です。 | |
numberAlign | bool | 数値を右詰めにするかどうか。 | true |
oddRowAttribute | string | 奇数行に使用する css クラス。 | 'odd' |
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" 属性に渡されます。 クォートやスラッシュなどを追加する処理は、自分で行ってください。 | '' |
pagerOptions | array | Pager レンダラに送信する独自のオプション。 | |
resultsFormat | string | 結果を表示する際に使用する sprintf の書式文字列。 | 'You have %s results in %s pages' |
selfPath | string | 並べ替えおよびページ処理に使用するパス。 | $_SERVER['PHP_SELF'] |
sortingResetsPaging | bool | 並べ替えの HTTP クエリで、ページをリセットするかどうか。 | true |
このドライバは render() メソッドをサポートしていません。 コンテナを現在の Flexy インスタンスにアタッチすることのみが可能となっています。 レンダラに対するオプションは setOptions() メソッドで渡さなければなりません。
Flexy の出力のバッファリングには、DataGrid の getOutput() メソッドを使用します。
このドライバは、次のような Flexy テンプレート変数を代入します。 - columnSet: カラムのラベルおよび並べ替えリンクの配列 - columnHeader: カラムのラベルおよび並べ替えリンクのオブジェクト - recordSet: レコードの値を表す連想配列 - numberedSet: レコードの値を表す数値添字配列 - currentPage: 現在のページ (1 から数えます) - recordLimit: 1 ページあたりの行数 - pagesNum: ページ数 - columnsNum: カラム数 - recordsNum: 現在のページのレコード数 - totalRecordsNum: レコードの総数 - firstRecord: 最初のレコードの番号 (1 から数えます) - lastRecord: 最後のレコードの番号 (1 から数えます)
このドライバは、getPaging という名前の Smarty カスタム関数も登録します。 これは Smarty テンプレート内で {getPaging} としてコール可能で、 ページ処理用のリンクを表示します。この関数は、Pager::factory() と同じ形式のオプションをパラメータとして受け付けます。
動的なテンプレートの例です。並べ替えおよびページ処理を含みます。
<!-- カスタム関数 getPaging でページ移動リンクを表示します --> {getPaging():h} <p>Showing records {firstRecord} to {lastRecord} from {totalRecordsNum}, page {currentPage} of {pagesNum}</p> <table cellspacing="0"> <!-- ヘッダを作成します --> <tr> <th> {foreach:columnSet,column} <td><a href="{column[link]:h}">{column[label]:h}</a></td> {end:} </th> </tr> <!-- 本体を作成します --> <tr class="{getRowCSS()}" flexy:foreach="numberedSet,k,row"> {foreach:row,field} <td>{field}</td> {end:} </tr> </table> |
静的なテンプレートの例です。並べ替えおよびページ処理を含みます。
<table cellspacing="0"> <!-- ヘッダを作成します --> <tr> <th> <td> <a href="{columnHeader.name[link]:h}">{columnHeader.field1[label]:h}</a> </td> <td> <a href="{columnHeader.surname[link]:h}">{columnHeader.field2[label]:h}</a> </td> </th> </tr> <!-- 本体を作成します --> <tr class="{getRowCSS()}" flexy:foreach="recordSet,k,row"> <td>{row[field1]}</td> <td>{row[field2]}</td> </tr> </table> |
require_once 'HTML/Template/Flexy.php'; require_once 'Structures/DataGrid.php'; require_once 'Structures/DataGrid/Renderer/Flexy.php'; $tpl = new HTML_Template_Flexy($config['HTML_Template_Flexy']); $dg =& new Structures_DataGrid($_GET['setPerPage'] ? $_GET['setPerPage'] : 10,$_GET['page'] ? $_GET['page'] : 1); $dg->bind($dataObject); $renderer = new Structures_DataGrid_Renderer_Flexy(); $renderer->setContainer($tpl); $renderer->setOptions($config['Structures_DataGrid']); $dg->attachRenderer($renderer); $this->tpl->compile($template); echo $dg->getOutput(); |