silvioq / report
Clase de integración con DataTables
    v4.3.8
    2024-12-15 23:07 UTC
Requires
- php: >=8.1
- ext-intl: *
- doctrine/orm: ^3.2
- symfony/http-foundation: ^6
- symfony/http-kernel: ^6
- symfony/options-resolver: ^6
- symfony/property-access: ^6
Requires (Dev)
Suggests
- beberlei/DoctrineExtensions: For DATE_FORMAT functions
- doctrine/annotations: For old versions of annotations
- dev-master
- v4.3.x-dev
- v4.3.8
- v4.3.7
- v4.3.6
- v4.3.5
- v4.3.4
- v4.3.3
- v4.3.2
- v4.3.1
- v4.3.0
- v4.0.x-dev
- v4.0.3
- v4.0.2
- v4.0.1
- v4.0.0
- v3.0.3
- v3.0.1
- v3.0.0
- v2.7.1
- v2.7.0
- v2.1.11
- v2.1.10
- v2.1.9
- v2.1.8
- v2.1.7
- v2.1.6
- v2.1.5
- v2.1.4
- v2.1.3
- v2.1.2
- v2.1.1
- v2.1.0
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v1.5.5
- v1.5.4
- v1.5.3
- v1.5.2
- v1.5.1
- v1.5.0
- v1.4.0
- v1.3.3
- v1.2.5
- v1.0.4
- dev-symfony-5
- dev-symfony-4.4
This package is auto-updated.
Last update: 2025-10-16 01:00:09 UTC
README
- Simple class for Datatables integration.
Version compatibility
| Version | Symfony version | Doctrine | 
|---|---|---|
| 1.x | 3.x | 2.x | 
| 2.x | 4.x | 2.x | 
| 3.x | 5.x | 2.x | 
| 4.0.x | 6.x | ^2.9 | 
| 4.3.x | 6.x | ^3.2 | 
Symfony 4
# config/bundles.php
...
    Silvioq\ReportBundle\SilvioqReportBundle::class => ['all' => true],
...
Datatable usage
TODO
Table usage
Table is a simple class for generating large reports (or CSV) from your entities
Simple usage
<?php
namespace AppBundle\Controller;
use Symfony\Component\HttpFoundation\StreamedResponse;
use Symfony\Component\HttpFoundation\ResponseHeaderBag;
use AppBundle\Entity\Entity;
class SimpleController extends Controller
{
    public function downloadAction()
    {
        $table =  $this->get('silvioq.report.table')->build(Entity::class);
                $em = $this->getDoctrine()->getManager();
        $response = new StreamedResponse();
        $iterator = $em->getRepository(Entity::class)
                ->createQueryBuilder('a')
                ->getQuery()->iterate();
        $trans = $this->get('translator');
        $header = array_map(function($header)use($trans){
                return $trans->trans($header);
            }, $table->getHeader() );
        $response->setCallback(function() use($iterator,$table, $header){
            $f = fopen( "php://output", "w" );
            try
            {
                fputcsv( $f, $header );
                foreach( $iterator as $row )
                {
                    $entity = $row[0];
                    fputcsv( $f, $table->getRow($entity) );
                }
            }
            catch(\Exception $e )
            {
                echo $e->getMessage();
                return;
            }
            fclose( $f );
        });
        $disposition = $response->headers->makeDisposition(
            ResponseHeaderBag::DISPOSITION_ATTACHMENT,
            'entity.csv' );
        $response->headers->set('Content-Type','text/csv');
        return $response;
    }
}
Testeo
docker run -ti --rm \
  --user $(id -u):$(id -g) -v $(pwd):/app -w /app \
  -v $HOME/.cache/composer:/opt/composer/cache \
  registry.gitlab.com/silvioq/php-base-image:8.1 \
  composer install
docker run -ti --rm \
  --user $(id -u):$(id -g) -v $(pwd):/app -w /app \
  -v $HOME/.cache/composer:/opt/composer/cache \
  registry.gitlab.com/silvioq/php-base-image:8.1 \
  vendor/bin/phpunit