Skip to main content

Table Renderer

To transform the query result into a table or a pivot table, you can use the TableRenderer service.

Rendering a Pivot Table or Regular Table​

The renderPivotTable() and renderTable() methods will return a pivot table and regular table, respectively, in HTML string that you can use in your view.

use Rekalogika\Analytics\Contracts\SummaryManager;
use Rekalogika\Analytics\Frontend\Exception\AnalyticsFrontendException;
use Rekalogika\Analytics\Frontend\Html\TableRenderer;
use Symfony\Contracts\Translation\TranslatorInterface;

/** @var SummaryManager $summaryManager */
/** @var TableRenderer $tableRenderer */
/** @var TranslatorInterface $translator */

$result = $summaryManager
->createQuery()
// ...
->getResult();

// renderPivotTable() returns a pivot table (or throws an exception if it cannot)
$table = $tableRenderer->renderPivotTable(
cube: $result->getCube(),
rows: ['time.year', 'category'],
columns: ['@values'],
measures: ['price', 'count'],
);

// renderTable() returns a regular table
$table = $tableRenderer->renderTable(
table: $result->getTable(),
measures: ['price', 'count'],
);

@values is a special dimension value that represents the measures of the query.

Exception Handling​

By default, any error message will be rendered in the resulting HTML. If you want to handle exceptions yourself, you can add the argument throwException: true to the renderPivotTable() or renderTable() methods.

The rendering methods may throw an AnalyticsFrontendException if the rendering fails. AnalyticsFrontendException is guaranteed to have a user-friendly, translatable error message that can be safely displayed to the user. Other exceptions are not guaranteed to have a user-friendly message, and should not be displayed to the user directly.

Changing the Theme​

By default, these methods will use a plain table output. To have a themed table, you can change the default theme in the configuration:

config/packages/rekalogika_analytics.yaml
rekalogika_analytics:
table_theme: "@RekalogikaAnalyticsFrontend/bootstrap_5_renderer.html.twig"

Alternatively, the methods above also accept the theme parameter, which allows you to specify a different theme for the table:

use Rekalogika\Analytics\Frontend\Html\TableRenderer;

/** @var TableRenderer $tableRenderer */

$table = $tableRenderer->renderPivotTable(
cube: $cube,
theme: '@RekalogikaAnalyticsFrontend/bootstrap_5_renderer.html.twig'
);

Creating a Custom Theme​

You can create a custom theme by extending the RekalogikaAnalyticsFrontend/renderer.html.twig file. Read bootstrap_5_renderer.html.twig for an example of how to do this.