matiasiglesias / vmb-zf2-data-export-module
此软件包最新版本(2.5.0)没有可用的许可信息。
CSV、PDF等数据导出模块
2.5.0
2017-03-05 13:59 UTC
Requires
- mikehaertl/phpwkhtmltopdf: ^2.2
- zendframework/zend-math: ^2.0
README
基于 Vitor Monteiro de Barros的数据导出模块
安装
注意
为了使模块正确运行,必须遵循Doctrine模块的安装说明。https://github.com/doctrine/DoctrineORMModule
ZF2 数据导出模块
运行 php composer.phar require vitorbarros/vmb-zf2-data-export-module
之后,在以下文件中添加以下模块:
DoctrineModule
、DoctrineORMModule
、DoctrineDataFixtureModule
和 VMBDataExport
至 config/application.config.php
之后,创建以下目录并赋予写权限 data/DoctrineORMModule/Proxy
创建以下目录
public/xsl
public/pdf
public/csv
表单
您的表单可以像这样扩展 VMBDataExportForm 类
<?php namespace MyModule\Form; use Zend\Form\Form; class FilterClaimForm extends VMBDataExportForm { public function __construct($name = null, $options = array()) { parent::__construct('my-form'); /** * All your controls here */ } }
通过实体进行数据导出
//controller class use Zend\Mvc\Controller\AbstractActionController; use VMBDataExport\Form\Export; class YourController extends AbstractCrudController { public function yourAction() { $form = new Export(); $form->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 <?php $form = $this->form; ?> <?php $form->setAttribute('action', '/export'); ?> <?php $form->prepare(); ?> <?php echo $this->form()->openTag($form); ?> <?php echo $this->formhidden($form->get('entity')); ?> <?php echo $this->formhidden($form->get('criteria')); ?> <?php echo $this->formhidden($form->get('type')); ?> <?php echo $this->formhidden($form->get('redirect_to')); ?> <?php echo $this->formhidden($form->get('headers')); ?> <?php echo $this->formsubmit($form->get('submit')); ?> <?php echo $this->form()->closeTag();
通过控制器中注入的服务进行数据导出
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); } }
使用自定义查询进行数据导出
//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); } }
访问浏览器
yourdomain.com.br/your-export-action
TODO
完成 VMBDataExport\Export\PDFExport
类