在Zend Framework 2中使用ZendPdf

时间:2013-02-01 16:42:25

标签: php zend-framework2

我正试图围绕zend框架2和它的模块系统。我在“入门指南”中使用了骨架应用程序。我现在想使用ZendPdf加载现有的pdf文件并使用它。到目前为止,我已经做了以下事情:

  • 使用composer将ZendPdf下载并安装到我的骨架应用程序
  • 将ZendPdf添加到我的application_config.php
  • 添加了一个简单的控制器操作来创建新的ZendPdf类并加载文档
  • 我还为控制器操作创建了一个视图。

当我在控制器中调用操作时,我收到以下错误

Fatal error: Uncaught exception 'Zend\ModuleManager\Exception\RuntimeException' with message 'Module (ZendPdf) could not be initialized

显然,从错误中,我需要将zendpdf添加到module_config.php中,以便ModuleManager可以获取它。这是我迷路了。我不知道如何在配置文件中配置zendpdf。这就是我到目前为止所做的:

相册模块中的

module.config

return array(
'controllers' => array(
    'invokables' => array(
        'Album\Controller\Album' => 'Album\Controller\AlbumController',
    ),
),
// Routes for 
'router' => array(
    'routes' => array(
        'album' => array(
            'type'    => 'segment',
            'options' => array(
                'route'    => '/album[/:action][/:id]',
                'constraints' => array(
                    'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                    'id'     => '[0-9]+',
                ),
                'defaults' => array(
                    'controller' => 'Album\Controller\Album',
                    'action'     => 'index',
                ),
            ),
        ),
    ),
),
'view_manager' => array(
    'template_path_stack' => array(
        'album' => __DIR__ . '/../view',
    ),
),
'zendpdf' => array() /* what to do here */
);

这是 AlbumController

中的控制器操作
public function viewPdfAction()
{
  $pdf = ZendPdf::load('/tmp/pdf_report.pdf');
}

这是 application.config

<?php
   return array(
     'modules' => array(
       'Application',
       'Album',
       'AlbumRest',
       'ZendPdf'
     ),
     'module_listener_options' => array(
        'config_glob_paths'    => array(
        'config/autoload/{,*.}{global,local}.php',
     ),
      'module_paths' => array(
          './module',
          './vendor',
     ),
  ),
);

我一直在阅读文档,但我只是没有得到它。我需要朝着正确的方向努力。

2 个答案:

答案 0 :(得分:4)

使用安迪的线索,我发现这是有效的。

通过composer安装ZendPdf。使用composer将使ZF2自动自动库。下面是我使用的composer.json文件

{
    "repositories": [
      {
        "type": "composer",
        "url": "http://packages.zendframework.com/"
      }
    ],
    "name": "zendframework/skeleton-application",
    "description": "Skeleton Application for ZF2",
    "license": "BSD-3-Clause",
    "keywords": [
        "framework",
        "zf2"
    ],
    "homepage": "http://framework.zend.com/",
    "require": {
        "php": ">=5.3.3",
        "zendframework/zendframework": "2.*",
        "zendframework/zendpdf": "*"
    }
}

在您的控制器中导入ZendPdf命名空间

use ZendPdf\PdfDocument;

然后在Controller动作中的某处创建一个新的pdf对象并使用它

public funciton someAction()
{
     $pdf = PdfDocument::load('path/to/pdf');
}

答案 1 :(得分:1)

我认为您使用的是this?在这种情况下,它不是一个模块,而是一个,它可以解释为什么您无法将其作为模块加载。如果您使用Composer安装它,那么您应该能够在vendor目录中找到它,并且它应该是自动加载的。然后,您应该能够使用它,就像使用适当的命名空间一样使用Zend Framework中的所有类。我自己没有用过,但我认为这就是你做错了。