Column Formatter
Вернуться к: Introduction and Features
Column Formatter
The column formatter method can be a very powerful solution to a very common need. The need is to customize the output for a cell in the grid such as a link for a form element. This can be easily done by specifying a "callback" function. This function will then return the string that is needed to be printed.
Using the column formatter
<?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('An error occured while fetching the RSS information.');
}
$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]);
}
}
?>
Each callback function needs to accept at least one parameter ($params in the example above). This parameter will contain various information:
-
'record': An array containing the complete current record
-
'fieldName': The field name of the current column
-
'columnName': The column name of the current column
-
'orderBy': The 'orderBy' argument of the current column
-
'attribs': The attributes of the current column
-
'currRow': The number of the current row
-
'currCol': The number of the current column
An optional second parameter ($args in the example) allows you to pass additional information to the callback functions. In the example above, an array with length information is passed when the callback function printDesc() is called for the description column. Please note that this second parameter is only passed when you specify something in the column constructor. Therefore, it is a good practice to use $args = array() in the parameter list of your callback functions.
Вернуться к: Introduction and Features