Laravel:如何通过URL

时间:2016-08-05 13:58:24

标签: php laravel-5 jasper-reports

我使用 iReport 创建了一个报告,该报告从我的数据库中的表中选择数据。

有2个字段fromdatetodate

我尝试了id的参数和客户名称都可以。

问题是:当我想在网址fromdatetodate中发送2个参数时,我正在尝试发送日期:2014-02-022017-02-02

网址:localhost/reports/getreportservice/2014-02-02&2017-02-02

然后在我的PHP文件中使用strtotime函数将这些日期从字符串转换为日期并更改格式。然后我将2个参数发送到报告。

在报告中,我将2个参数类型设置为:java.util.Date,在MySQL中,字段的类型为:DATETIME。

该报告给出了错误:cannot process the report。每当我们在错误中出错时,都会出现同样的错误。没有更多的日志。

任何人都有解决方案让JasperReports的报告接受这两个参数吗?

我尝试在 iReport 中预览我的报告,它运行正常并获取了我的数据。我尝试了id param并命名一切正常。问题在于从URL接受日期。

<?php
namespace App\Http\Controllers;
use JasperPHP\JasperPHP;
class ReportController extends Controller {
public function getReportTest($fromdate,$todate){
    $fromdatee=  strtotime($fromdate);
    $fromdateee=Date('d/M/y',$fromdatee);
    $todatee=  strtotime($todate);
    $todateee=date('d/M/y',$todatee);

    $output = public_path() . '/report/'.time().'_CancelAck';
    $output = public_path() . '/report/'.time().'_CancelAck';
    $ext = "html";
    $data_file = public_path() . '/report/CancelAck.xml';
    $driver = 'xml';
    $xml_xpath = '/CancelResponse/CancelResult/ID';

    \JasperPHP::process(
        public_path() . '/report/newreporttest.jrxml',
        $output,
        array($ext),
        array('fromdate' =>$fromdateee, 'todate' =>$todateee),
        array(
  'driver' => 'mysql',
  'username' => 'root',
  'password' =>'',
  'host' => 'localhost',
  'database' => 'test',
  'port' => '3306',
 ),
        array('data_file' => $data_file, 'driver' => $driver, 'xml_xpath' =>      $xml_xpath),
        false,
        false
    )->execute();

 //        header('Content-Description: File Transfer');
//        header('Content-Type: application/octet-stream');
//        header('Content-Disposition: attachment;    filename='.time().'_CancelAck.'.$ext);
 //        header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Content-Length: ' . filesize($output.'.'.$ext));
    flush();
    readfile($output.'.'.$ext);
    unlink($output.'.'.$ext);

}

}

0 个答案:

没有答案