2

私はzendフレームワーク2とそのモジュールシステムに頭を悩ませようとしています。スタートガイドのスケルトンアプリケーションが機能しています。ZendPdfを使用して、既存のpdfファイルをロードして操作したいと思います。私はこれまでに次のことを行いました。

  • 私のスケルトンアプリにcomposerを使用してZendPdfをダウンロードしてインストールしました
  • 私のapplication_config.phpにZendPdfを追加しました
  • 新しいZendPdfクラスを作成し、ドキュメントにロードするための簡単なコントローラーアクションを追加しました
  • コントローラアクションのビューも作成しました。

コントローラでアクションを呼び出すと、次のエラーが発生します

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

明らかに、エラーから、moduleManagerがそれを取得できるように、module_config.phpにzendpdfを追加する必要があります。これは私が迷子になったということです。設定ファイルで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

アンディからの手がかりを使用して、これは私がうまくいったことを発見したものです。

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');
}
于 2013-02-04T21:55:01.793 に答える
1

あなたが使っているのはこれだと思いますか?その場合、それはモジュールではなくライブラリであり、モジュールとしてロードできない理由を説明します。Composerを使用してインストールした場合は、vendorディレクトリ内で見つけることができ、自動ロードされるはずです。これで、適切な名前空間を使用して、ZendFramework内のすべてのクラスを使用するのと同じように使用できるようになります。私自身はこれを使ったことがありませんが、これはあなたが間違ったことだと思います。

于 2013-02-02T23:02:45.383 に答える