yii2基本模板上的jasper

时间:2016-11-06 19:35:35

标签: php yii2 jasper-reports

我已按照JasperReports for yii2的步骤说明进行操作。

  1. 在我的Debian 8上安装了JDK 1.8
  2. 在/ etc / profile
  3. 中设置mysql连接器的类路径
  4. 将chrmorandi / yii2-jasper添加到我的作曲家并更新
  5. 我猜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的信息。欢迎任何帮助。 谢谢。

1 个答案:

答案 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的扩展实现了我的所有目标。

我希望这有助于某人。