カラムフォーマッタ
カラムフォーマッタ – カラムフォーマッタで何ができるのか?
説明
カラムフォーマッタメソッドを使用すると、よくある要望にうまく対応することができます。
グリッドのセルの出力方法をカスタマイズして、例えばフォーム要素へのリンクにすることなどが可能です。
これを行うには、単に "コールバック" 関数を指定するだけです。
この関数は、表示される文字列を返します。
<?php
require_once 'Structures/DataGrid.php';
$dg =& new Structures_DataGrid();
$result = $dg->bind('http://pear.php.net/feeds/pkg_structures_datagrid.rss');
if (PEAR::isError($result)) {
die('RSS 情報の取得中にエラーが発生しました。');
}
$dg->addColumn(
new Structures_DataGrid_Column('Release', 'title', 'title',
null, null, 'printLink')
);
$dg->addColumn(
new Structures_DataGrid_Column('Description', 'description',
'description', null, null,
'printDesc', array('length' => 15))
);
$dg->addColumn(
new Structures_DataGrid_Column('Date', 'dc:date', 'dc:date')
);
$dg->render();
function printLink($params, $args = array())
{
extract($params);
extract($args);
return '<a href="' . $record['link'] . '">' . $record['title'] . '</a>';
}
function printDesc($params, $args = array())
{
extract($params);
extract($args);
if (strlen($record[$fieldName]) > $length) {
return nl2br(substr($record[$fieldName], 0, $length)) . '...';
} else {
return nl2br($record[$fieldName]);
}
}
?>
各コールバック関数は、すくなくともひとつのパラメータ
(上の例では $params
)
を受け取れるようにしなければなりません。
このパラメータには、さまざまな情報が含まれます。
-
'record': 現在のレコード全体を含む配列。
-
'fieldName': 現在のカラムのフィールド名。
-
'columnName': 現在のカラムのカラム名。
-
'orderBy': 現在のカラムの引数 'orderBy' の値。
-
'attribs': 現在のカラムの属性。
-
'currRow': 現在の行番号。
-
'currCol': 現在の列番号。
オプションの二番目のパラメータ (上の例では $args
)
を使用して、コールバック関数に追加情報を渡すことができます。
上の例では、description 列のコールバック関数 printDesc()
がコールされた際に、長さ情報を含む配列を渡しています。この二番目のパラメータは、
カラムのコンストラクタで指定したときにだけ渡されることに注意しましょう。
したがって、コールバック関数のパラメータリストでは
$args = array() を使用することをお勧めします。