koolreport/instant

允许即时渲染小部件

3.7.0 2020-11-10 10:38 UTC

README

有时,我们需要在我们的页面上显示一些表格或图表,但设置整个KoolReport虽然简单,但会造成麻烦,也不方便。Instant包允许我们无需设置完整报告即可在任何地方即时创建报告或小部件。

除了Instant包可以帮助您将任何文件(无论是html还是php)导出为PDF和其他格式外。

安装

  1. 下载并解压zip文件
  2. 将"instant"文件夹复制到"koolreport\instant"文件夹中

文档

小部件

示例

创建KoolPHP表格

以下是如何在您的PHP页面上创建表格的示例

<?php
    require_once "koolreport\autoload.php";
    use \koolreport\instant\Widget;
    use \koolreport\widgets\koolphp\Table;
?>

<html>
    <head>
        <title>Instant Table</title>
    </head>
    <body>
    <?php
    Widget::create(Table::class,array(
        "dataSource"=>array(
            array("name"=>"Peter","age"=>35),
            array("name"=>"Karl","age"=>32),
        )
    ));
    ?>
    </body>
</html>

如您所见,您无需设置整个KoolReport类和视图即可使用我们的Widget。使用Instance包,您可以创建任何您想要的Widget。

创建Google BarChart

<?php
    require_once "koolreport\autoload.php";
    use \koolreport\instant\Widget;
    use \koolreport\widgets\google\BarChart;
?>

<html>
    <head>
        <title>Instant Table</title>
    </head>
    <body>
    <?php
    Widget::create(BarChart::class,array(
        "dataSource"=>array(
            array("name"=>"Peter","age"=>35),
            array("name"=>"Karl","age"=>32),
        )
    ));
    ?>
    </body>
</html>

创建PieChart

<?php
    require_once "koolreport\autoload.php";
    use \koolreport\instant\Widget;
    use \koolreport\widgets\google\PieChart;
?>

<html>
    <head>
        <title>Instant Table</title>
    </head>
    <body>
    <?php
    Widget::create(PieChart::class,array(
        "dataSource"=>array(
            array("browser"=>"Chrome","usage"=>44.5),
            array("browser"=>"Safari","usage"=>25.4),
            array("browser"=>"Internet Explorer","usage"=>15.5),
            array("browser"=>"Firefox","usage"=>7.4),
            array("browser"=>"Others","usage"=>7.2),
        )
    ));
    ?>
    </body>
</html>

资源文件夹

自动创建资源文件夹

默认情况下,Instant包会自动创建名为koolreport_assets的文件夹来保存小部件的资源。这将确保所有小部件都能无缝工作。

手动创建资源文件夹

如果您想将所有koolreport小部件的资源组织到您自己预先创建的资源文件夹中,您可以这样做。例如,您有创建的assets文件夹,您可以像下面这样做

<?php
Widget::create(Table::class,array(
    "dataSource"=>array(
        array("name"=>"Peter","age"=>35),
        array("name"=>"Karl","age"=>32),        
    )
),array(
    "path"=>"../../assets"
    "url"=>"/assets",
));
?>

create函数的第三个参数是资源文件夹的可选设置。如果浏览器无法访问包含Widget资源的文件夹,则需要此assets设置。通过指定path和url,我们让KoolReport知道Widget资源的位置以及如何访问这些资源。

关闭此功能

如果您将KoolReport库放在浏览器可以访问的文件夹中,那么创建assets文件夹就没有必要了。因此,您可以告诉instant包不要创建任何assets文件夹。只需在第三个参数中输入false值,如下所示

<?php
Widget::create(Table::class,array(
    "dataSource"=>array(
        array("name"=>"Peter","age"=>35),
        array("name"=>"Karl","age"=>32),        
    )
),false);
?>

导出器

导出器帮助您利用(如果您有的话)导出包将任何HTML或PHP代码文件导出为PDF和其他格式。

<?php
require_once "koolreport/autoload.php";
use \koolreport\instant\Exporter;

Exporter::export("/full/path/to/your/file.php")
->pdf(array(
    "format"=>"A4",
    "orientation"=>"portrait"
))
->toBrowser("myfile.pdf");

或保存文件

Exporter::export("/full/path/to/your/file.php")
->pdf(array(
    "format"=>"A4",
    "orientation"=>"portrait"
))
->saveAs("myfile.pdf");

单页

正如您可能知道的,要启动报告,我们通常需要3个文件:一个控制器类文件(例如MyReport.php),一个视图文件(例如MyReport.view.php)和一个初始化文件(例如index.php)。SinglePage允许我们创建仅包含一个文件的报告,将控制器、视图和初始化文件捆绑在一起。请查看以下示例

<?php
//Index.php
require_once "../../../koolreport/autoload.php";

use \koolreport\querybuilder\DB;
use \koolreport\widgets\koolphp\Table;

class MyReport extends \koolreport\KoolReport
{
    use \koolreport\instant\SinglePage;
    use \koolreport\clients\Bootstrap;
    function settings()
    {
        return array(
            "dataSources"=>array(
                "automaker"=>array(
                    "connectionString"=>"mysql:host=localhost;dbname=automaker",
                    "username"=>"root",
                    "password"=>"",
                    "charset"=>"utf8"
                ),
            ),
        );
    }

    function setup()
    {
        $this->src('automaker')->query(
            DB::table("customers")->select("customerNumber","customerName")
        )
        ->pipe($this->dataStore("mydata"));
    }
}

$report = new MyReport;
$report->start();
?>

<html>
    <head>
        <title>Test</title>
    </head>
    <body>
        <h1>Testing</h1>
        <?php
        Table::create(array(
            "dataSource"=>$report->dataStore('mydata')
        ));
        ?>
    </body>
</html>

<?php $report->end(); ?>

如您从上面的示例中看到,我们只有一个文件index.php,其中包含控制器类MyReport和报告内的start()end()方法中的视图。我们在MyReport内部声明use \koolreport\instant\SinglePage;以提供上述两个重要方法。

支持

如果您需要支持,请使用我们的论坛,这样其他人也可以从中受益。如果支持请求需要保密,您可以发送电子邮件至我们,地址为 support@koolreport.com