An open API service indexing awesome lists of open source software.

https://github.com/matiasiglesias/vmb-zf2-data-export-module

ZF2 Data Export Module to XLS, CSV and PDF
https://github.com/matiasiglesias/vmb-zf2-data-export-module

csv export module pdf php xls zf2

Last synced: 7 months ago
JSON representation

ZF2 Data Export Module to XLS, CSV and PDF

Awesome Lists containing this project

README

          

# Módulo para exportação de dados em CSV, XSL, e PDF
Based on [Módulo de exportação de dados de Vitor Monteiro de Barros](https://github.com/vitorbarros/vmb-zf2-data-export-module)

## Instalação

### Observação
Para que o módulo funcione de forma correta, é necessário seguir as instruções de instalação do módulo do Doctrine.
`https://github.com/doctrine/DoctrineORMModule`

### ZF2 Data Export Module

Rode
`php composer.phar require vitorbarros/vmb-zf2-data-export-module`

Após, adicione os seguintes modulos
`DoctrineModule`, `DoctrineORMModule`, `DoctrineDataFixtureModule` and `VMBDataExport` no seguinte arquivo: `config/application.config.php`

Após, crie o seguinte diertório com permissão de escrita
`data/DoctrineORMModule/Proxy`

Cria os seguintes diretórios

`public/xsl`

`public/pdf`

`public/csv`

### Form ###
Your form can extend VMBDataExportForm Class like this:

```php
setData(array(
'entity' => 'Your\Entity\NameSpace',
//Condições da query
'criteria' => Json::encode(array()),
//Tipos suportados xls, pdf, csv
'type' => 'xls',
//url to redirect
'redirect_to' => '/interno/super-admin/cursos',
//headers
'headers' => Json::encode(array(
'event_nome',
'event_data_inicio',
'event_data_final',
'event_descricao',
)),
));
return new ViewModel(
array(
'form' => $form,
)
);
}
}

//view
form; ?>
setAttribute('action', '/export'); ?>
prepare(); ?>

form()->openTag($form); ?>

formhidden($form->get('entity')); ?>
formhidden($form->get('criteria')); ?>
formhidden($form->get('type')); ?>
formhidden($form->get('redirect_to')); ?>
formhidden($form->get('headers')); ?>
formsubmit($form->get('submit')); ?>

form()->closeTag();

```

### Export Throw service injected in your Controller

```php

namespace MyNameSpace

use VMBDataExport\Service\MainService;
class MyController
{
private $exportService;

public function __contruct(MainService $exportService)
{
$this->exportService = $exportService;
}

public function CustomAction() {
$filename = $this->exportService->strategy('xls', [
'entity' => 'My\Entity\Name',
'method' => 'filter', //You can call a custom Entity Repository Method
'criteria' => Json::encode(
[$your_criteria_array]
),
'headers' => Json::encode([
'field1',
'field2',
// ...
]),
]);

return $this->redirect()->toUrl($filename);
}
}
```

### Export de dados com query customizada

```php
//controller class

use Zend\Mvc\Controller\AbstractActionController;
use VMBDataExport\Service\CustomExportService;

class YourController extends AbstractCrudController
{

/**
* @var CustomExportService
*/
private $customExportService;

/**
* ExportController constructor.
* @param CustomExportService $customExportService
*/
public function __construct(CustomExportService $customExportService)
{
$this->customExportService = $customExportService;
}

public function yourAction()
{
$sql = "Your query";

$filePath = $this->customExportService->export($sql, array(
'your',
'header',
'fields'
), 'xls');

return $this->redirect()->toUrl($filePath);
}
}

```
#### Acesse o navegador
`yourdomain.com.br/your-export-action`

### TODO
Finalizar a classe `VMBDataExport\Export\PDFExport`