eidsonator/bootstrap-reports-bundle

一个用于显示来自任何数据源报告的Symfony (2 & 3) Bundle,包括SQL和MongoDB

v0.2.0 2016-04-08 15:18 UTC

This package is auto-updated.

Last update: 2024-08-29 03:58:09 UTC


README

现在支持Symfony2.x和Symfony3.x

一个用于管理和显示从任何数据源(包括SQL和MongoDB)生成的美观且可导出的报告的Symfony bundle。

主要特性包括

  • 显示来自任何可以输出表格数据的源(如SQL、MongoDB、PHP等)的报告
  • 以HTML、XML、CSV、JSON或您自己的自定义格式输出报告
  • 向报告中添加可定制的参数(例如,开始日期和结束日期)
  • 使用Google Data Visualization API添加图表和图形
  • 支持多个数据库环境(例如,生产、预发布和开发)
  • 完全可扩展和可定制

安装 & 文档

安装 & 文档 可在 /Resources/doc/ 中找到

报告问题或功能请求

问题和功能请求可以通过 Github问题跟踪器 提交。

基本介绍

报告组织在目录中,每个报告都是单独的文件。

报告由包含元数据(例如名称和描述)的标题和实际的报告(SQL查询、javascript或PHP代码)组成。

所有报告返回数据行,然后以可排序/可搜索的HTML表格的形式显示。

报告可以导出为包括CSV、XLS、JSON和XML在内的多种格式。

Php Reports框架将这些不同的报告类型、输出格式和元数据绑定到一个一致的接口。

示例报告

以下是一个示例SQL报告

-- Products That Cost At Least $X
-- VARIABLE: {"name": "min_price"}

SELECT Name, Price FROM Products WHERE Price > "{{min_price}}"

顶部的SQL注释是报告标题。第一行始终是报告名称。

VARIABLE标题告诉报告框架在运行报告之前提示用户输入值。一旦提供,它将被传递到报告主体(例如此示例中的"{{min_price}}")并执行。

以下是一个MongoDB报告

// List of All Foods
// MONGODATABASE: MyDatabase
// VARIABLE: {
//   "name": "include_inactive", 
//   "display": "Include Inactive?", 
//   "type": "select",
//   "options": ["yes","no"]
// }

var query = {'type': 'food'};

if(include_inactive == 'no') {
    query.status = 'active';
}

var result = db.Products.find(query);

printjson(result);

如您所见,结构非常相似。MongoDB报告使用javascript风格的注释作为标题,但其他一切都相同。

如果指定了MONGODATABASE标题,它将填充'db'变量。

以下是一个PHP报告

<?php
//List of Payment Charges
//This connects to the Stripe Payments api and shows a list of charges
//INCLUDE: /stripe.php
//VARIABLE: {"name": "count", "display": "Number to Display"}

if($count > 100 || $count < 1) throw new Exception("Count must be between 1 and 100");

$charges = Stripe_Charge::all(array("count" => $count));

$rows = array();
foreach($charges as $charge) {
    $rows[] = array(
        'Charge Id'=>$charge->id,
        'Amount'=>number_format($charge->amount/100,2),
        'Date'=>date('Y-m-d',$charge->created)
    );
}

echo json_encode($rows);
?>

再次,标题格式非常相似。

INCLUDE标题在运行的报告中包含另一个报告。以下是/stripe.php的示例内容

<?php
//Stripe PHP Included Report
//You can have headers here too; even nested INCLUDE headers!
//Some headers will even bubble up to the parent, such as the VARIABLE header

//include the Stripe API client
require_once('lib/Stripe/Stripe.php');

//set the Stripe api key
Stripe::setApiKey("123456");
?>