Structures_DataGrid_Renderer_CheckableHTMLTable

Structures_DataGrid_Renderer_CheckableHTMLTable -- グリッドの各行にチェックボックスをつけた HTML テーブルレンダリングドライバ

注意

このドライバは 実験的な もので、まだ正式にはリリースされていません。 CVS 版 でしか使用できません。

説明

DataGrid を、各行にチェックボックスのついた HTML テーブルとしてレンダリングするドライバです。

サポートする操作モード

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

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

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

オプション

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

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

オプション説明デフォルト値
buildFooterboolフッタを作成するかどうか。true
buildHeaderboolヘッダを作成するかどうか。true
classASCstring TH 要素の CSS クラス名で、現在の並び順が昇順であることを表すもの。 ''
classDESCstring TH 要素の CSS クラス名で、現在の並び順が降順であることを表すもの。 ''
columnAttributesarray カラムのセルの属性。 array(fieldName => array(attribute => value, ...) ...) 形式の配列となります。 このオプションは、XML/HTML ベースのドライバでのみ使用します。 array()
convertEntitiesbool html エンティティを変換するかどうか。 htmlspecialchars() をコールします。 true
defaultCellValuestring空のセルに表示するデフォルトの値。null
defaultColumnValuesarray カラムごとに指定するセルのデフォルト値。 array(fieldName => value, ...) 形式の配列となります。 array()
emptyRowAttributesarray空の行についての属性を含む連想配列。array()
encodingstring 内容のエンコーディング。mbstring 拡張モジュールが使用可能な場合、 デフォルト値は mb_internal_encoding() から取得します。 それ以外の場合のデフォルト値は ISO-8859-1 となります。 'ISO-8859-1'
evenRowAttributesarray偶数行の属性を含む連想配列。array()
excludeVarsarray作成される HTTP クエリから取り除く変数。array()
extraVarsarray作成される HTTP クエリに追加される変数。array()
fillWithEmptyRowsboolすべてのページで行数が同じになるようにするかどうか。false
formobjectHTML_QuickForm オブジェクトのインスタンス。null
formRendererobjectHTML_QuickForm_Renderer_QuickHtml オブジェクトのインスタンス。null
headerAttributesarray 見出し行の属性。array(attribute => value, ...) 形式の配列となります。 array()
hideColumnLinksarray デフォルトでは、すべてのカラムで並べ替えリンクが有効になります。 このオプションを使用すると、指定したカラムの並べ替えリンクを無効にできます。 array(fieldName, ...) 形式の配列で指定します。 このオプションは、並べ替えをサポートしているドライバでのみ有効です。 array()
inputNamestringチェックボックスの HTML_QuickForm 要素名。'checkedItems'
numberAlignbool数値を右詰めにするかどうか。true
oddRowAttributesarray奇数行の属性を含む連想配列。array()
onMovestring ユーザがページを移動したりデータをソートしたりしたときの onclick/onsubmit イベント発生時にコールする Javascript 関数の名前。 この関数は、オブジェクトを引数として受け取ります。 このオブジェクトの形式は { page: <page>, sort: [{field: <field>, direction: <direction>}, ...], data: <user_data> } のようになります。このオプションを指定しても、 href 属性は削除されないことに注意しましょう。 href を無効にしたい場合 (AJAX など……) は、ハンドラ関数内で false を返すようにしなければなりません。 null
onMoveDatastring onMove に渡す引数のオブジェクトの、"data" に渡すデータ。JSON 形式のシリアル化は行わず、 そのままの形で "data" 属性に渡されます。 クォートやスラッシュなどを追加する処理は、自分で行ってください。 ''
primaryKeystring主キーの名前。この値をチェックボックスで使用します。'id'
selfPathstring並べ替えおよびページ処理に使用するパス。$_SERVER['PHP_SELF']
sortIconASCstring 現在の並び順が昇順であることを示すアイコン。テキストか、 あるいは画像を表す HTML となります。 ''
sortIconDESCstring 現在の並び順が降順であることを示すアイコン。テキストか、 あるいは画像を表す HTML となります。 ''
sortingResetsPagingbool並べ替えの HTTP クエリで、ページをリセットするかどうか。true

全般的な注意

このドライバは、テーブルの各行の最初のカラムにチェックボックスを配置します。 デフォルトでは、オプション 'inputName' で指定した名前の新しいカラムがチェックボックス用に作成されます。 このカラムをカスタマイズしたい場合は、次の例で示すようにカラムを自分で作成します。

例 62-1基本的な使用例

<?php
require_once 'HTML/QuickForm.php';
require_once 'HTML/QuickForm/Renderer/QuickHtml.php';
require_once 'Structures/DataGrid.php';

// フォームおよび QuickHtml レンダラを準備します
$form =& new HTML_QuickForm();
$renderer =& new HTML_QuickForm_Renderer_QuickHtml();

// アクション選択用の要素と送信ボタンをフォームに追加します
$form->addElement('select', 'action', 'choose',
                  array('delete' => 'Delete',
                        'move'   => 'Move to archive'));
$form->addElement('submit', 'submit', 'Save');

// DataGrid を準備します
$dg =& new Structures_DataGrid();
if (PEAR::isError($dg)) {
   die($dg->getMessage() . '<br />' . $dg->getDebugInfo());
}

// データをバインドします (たとえば SQL クエリや MDB2 を使用します)
$error = $dg->bind('SELECT * FROM news',
                   array('dsn' => 'mysql://user:password@server/database'));
if (PEAR::isError($error)) {
   die($error->getMessage() . '<br />' . $error->getDebugInfo());
}

// デフォルトでは、チェックボックス用のカラムをレンダラが自動的に追加します。
// カラムを自分で追加するには、次の 4 行のようにします
$column = new Structures_DataGrid_Column('checkboxes', 'idList', null,
                                         array('width' => '10'));
$dg->addColumn($column);
$dg->generateColumns();

$rendererOptions = array('form'         => $form,
                         'formRenderer' => $renderer,
                         'inputName'    => 'idList',
                         'primaryKey'   => 'id'
                        );

// フォームのテンプレート用の文字列を使用します
$tpl = '';

// HTML テーブルを作成し、それをテンプレート文字列に追加します
$tpl .= $dg->getOutput('CheckableHTMLTable', $rendererOptions);
if (PEAR::isError($tpl)) {
   die($tpl->getMessage() . '<br />' . $tpl->getDebugInfo());
}

// 選択ボックスと送信ボタンをテンプレート文字列に追加します
$tpl .= $renderer->elementToHtml('action');
$tpl .= $renderer->elementToHtml('submit');

// フォームを出力する準備ができました (toHtml() は、<form> / </form>
// をテンプレートに自動的に追加します)
echo $renderer->toHtml($tpl);

// フォームが送信されてデータが正しかった場合は、その内容を表示します
if ($form->isSubmitted() && $form->validate()) {
    var_dump($form->getSubmitValues());
}
?>