matiasiglesias/vmb-zf2-data-export-module

此软件包最新版本(2.5.0)没有可用的许可信息。

CSV、PDF等数据导出模块

2.5.0 2017-03-05 13:59 UTC

This package is auto-updated.

Last update: 2024-09-24 21:03:05 UTC


README

基于 Vitor Monteiro de Barros的数据导出模块

安装

注意

为了使模块正确运行,必须遵循Doctrine模块的安装说明。https://github.com/doctrine/DoctrineORMModule

ZF2 数据导出模块

运行 php composer.phar require vitorbarros/vmb-zf2-data-export-module

之后,在以下文件中添加以下模块:
DoctrineModuleDoctrineORMModuleDoctrineDataFixtureModuleVMBDataExportconfig/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