2lenet/crudit-bundle
Symfony bundle to rapidly build configurable CRUD back offices with SB Admin layout. Provides list views with pagination, sorting, actions, exports and batch ops, plus datasources, filters, menus, workflows, maps, markdown and Twig helpers.
Crudit adds an exporter that handles data export for multiple configurable formats.
By default, Crudit adds an "Export" button for all lists and will export index fields.
In your CrudConfig::getListActions, you can add the export action manually.
This is already configured by default.
public function getListActions(): array
{
$actions[] = ListAction::new(
"action.export",
$this->getPath(CrudConfigInterface::EXPORT),
Icon::new("file-export")
)
->setModal("[@LleCrudit](https://github.com/LleCrudit)/modal/_export.html.twig")
->setConfig(
[
// you can change this part to put whatever you want
"export" => [Exporter::CSV, Exporter::EXCEL],
]
);
}
public function getFields($key): array
{
if ($key === CrudConfigInterface::EXPORT) {
return [
Field::new(...)
];
}
// if EXPORT is not filled, INDEX is used instead
}
Crudit already comes with some exporters:
If you want to change the behaviour of the exporters, you can edit your CrudConfig::getExportParams.
public function getExportParams(string $format): ExportParams
{
// $format contains Exporter::CSV, Exporter:EXCEL or whatever else you added
return ExportParams::new()
->setFilename($this->getName())
->setSeparator(";");
}
You can add your own exporters.
Your exporter must implement Lle\CruditBundle\Contracts\ExporterInterface
getSupportedFormat: your format. It has to be then added in the "export" config of your ListAction (see above)export: the actual export action. It must return a Response.Example:
<?php
namespace App\Service\CustomExporter;
class CustomExporter implements ExporterInterface
{
public function getSupportedFormat(): string
{
return "custom";
}
public function export(iterable $resources, ExportParams $params): Response
{
return new Response("Hello from custom export!");
}
}
Don't forget to add action in your CrudConfig
ListAction::new()
->setModal("[@LleCrudit](https://github.com/LleCrudit)/modal/_export.html.twig")
->setConfig(
[
"export" => ["custom"],
]
);
Crudit will automatically detect the exporters and complete the export form.
The PDF exporter can be personalized in the crud config:
public function getExportParams(string $format): ExportParams
{
$exportParams = parent::getExportParams($format);
$params = $exportParams->getPdfParams();
$params['locale'] = 'fr'
$params['header-footer'] = [
'header-left' => 'I am the page header',
'footer-center' => 'Made with Crudit',
];
$exportParams->setPdfParams($params);
return $exportParams;
}
The default values are:
[
'title' => 'Export',
'paper_size' => 9, //A4
'orientation' => 'landscape',
'decimal_separator' => ',',
'thousands_separator' => '.',
'locale' => 'fr',
'header-footer' => [
'header-left' => '',
'header-center' => '',
'header-right' => '',
'footer-left' => '',
'footer-center' => '',
'footer-right' => '',
],
];
To customize the values, check the PhpSpreadsheet documentation,
How can I help you explore Laravel packages today?