我正试图围绕zend框架2和它的模块系统。我在“入门指南”中使用了骨架应用程序。我现在想使用ZendPdf加载现有的pdf文件并使用它。到目前为止,我已经做了以下事情:
当我在控制器中调用操作时,我收到以下错误
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',
),
),
);
我一直在阅读文档,但我只是没有得到它。我需要朝着正确的方向努力。
答案 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中的所有类。我自己没有用过,但我认为这就是你做错了。