2

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

  • 使用作曲家下载并安装 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',
     ),
  ),
);

我一直在阅读文档,但只是不明白。我需要朝着正确的方向前进。

4

2 回答 2

4

Using clues from Andy this is what I found that worked.

Install ZendPdf via composer. Using composer will make ZF2 automatically auto-the library. below is the composer.json file that I used

{
    "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": "*"
    }
}

In your controller import the ZendPdf namespace

use ZendPdf\PdfDocument;

Then somewhere in a Controller action create a new pdf object and work with it

public funciton someAction()
{
     $pdf = PdfDocument::load('path/to/pdf');
}
于 2013-02-04T21:55:01.793 回答
1

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

于 2013-02-02T23:02:45.383 回答