我已按照JasperReports for yii2的步骤说明进行操作。
我猜php exec()函数已启用,因为任何视图中的以下测试都能成功解析...
<? echo exec('whoami'); ?>
chromandi现在在/ vendors
下java -version说1.8.0_111
$ CLASHPATH指向/usr/share/mysql-connector-java/mysql-connector-java-5.1.40-bin.jar
配置是......
'components' => [
'jasper' => [
'class' => 'chrmorandi\jasper',
'db' => [
'host' => 'localhost',
'port' => 3306,
'driver' => 'mysql',
'dbname' => 'acme',
'username' => 'acme',
'password' => 'acme'
]
],
...
]
我添加了一个像这样的控制器......
<?php
namespace app\controllers;
use Yii;
use chrmorandi\Jasper;
class EstadisticasController extends \yii\web\Controller {
public function actionIndex() {
// Set alias for sample directory
Yii::setAlias('example', '@vendor/chrmorandi/yii2-jasper/examples');
/* @var $jasper Jasper */
$jasper = Yii::$app->jasper;
// Compile a JRXML to Jasper
$jasper->compile(Yii::getAlias('@example') . '/hello_world.jrxml')->execute();
// Process a Jasper file to PDF and RTF (you can use directly the .jrxml)
$jasper->process(Yii::getAlias('@example') . '/hello_world.jasper', [
'php_version' => 'xxx'
], [
'pdf',
'rtf'
], false, false)->execute();
// List the parameters from a Jasper file.
$array = $jasper->listParameters(Yii::getAlias('@example') . '/hello_world.jasper')->execute();
// return pdf file
Yii::$app->response->sendFile(Yii::getAlias('@example') . '/hello_world.pdf');
}
}
并测试了应该是内置示例的http://www.acme.es/estadisticas/index。
现在问题来了。它抱怨
$jasper = Yii::$app->jasper;
线。输出说
ReflectionException类chrmorandi \ jasper不存在
任何人都面临这个问题?在Yii上没有关于jasper的信息。欢迎任何帮助。 谢谢。
答案 0 :(得分:1)
最后解决方案正在改变
$jasper = Yii::$app->jasper;
到
$jasper = new \chrmorandi\jasper\Jasper();
不知道为什么在yii2-jasper文档中设置了它,如果它不起作用。无论如何,你可以按照上面的编译工作。
作为
use chrmorandi\Jasper
无法正常使用
您必须在init函数中更改Jasper.php设置
$componentes = Yii::$app->components;
$this->db = $componentes['jasper']['db'];
让它发挥作用。
在供应商下编辑不是我想做的事情。为了防止这些修复,我从chrmorandi的扩展(直到改进)转移到cossou/jasperphp扩展名。
到目前为止,cossou的扩展实现了我的所有目标。
我希望这有助于某人。