eidsonator / bootstrap-reports-bundle
一个用于显示来自任何数据源报告的Symfony (2 & 3) Bundle,包括SQL和MongoDB
v0.2.0
2016-04-08 15:18 UTC
Requires
- adodb/adodb-php: v5.20.3
- google/apiclient: 1.1.7
- phpoffice/phpexcel: 1.8.1
- rmoiseev/spyc: 0.5.1
- symfony/assetic-bundle: v2.8.0
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"); ?>