0

ZF2 プロジェクト (zf2skeleton とは少し異なります) をセットアップしようとしています。composer を使用して、ベンダーのもの (composer を介してインストールされたもの) だけでなく、作成したモジュールからもすべての自動読み込みを処理したいと考えています。

何らかの理由で、アプリケーション モジュールのインデックス コントローラーにアクセスできません。オートローディングが機能していないと思います...何が間違っているのかわかりません..

ありがとう!

以下のファイルとデータ:

これは私のフォルダ構造です:

index.php
private
- modules
-- Aplication
--- src
----- Aplication
------- Controller
---------- IndexController.php
- vendor
-- zendframework
-- composer
-- autoload.php
- composer.json
- composer.phar

main.config.php

return array(
    'modules' => array(
        'Application',
    ),
    'module_listener_options' => array(
        'config_glob_paths' => array(
            'private/config/autoload/{,*.}{global,local}.php',
        ),
        'cache_dir' => realpath(dirname(__DIR__) . '/../../data/cache'),
        'module_paths' => array(
            realpath(__DIR__ . '/../module'),
            realpath(__DIR__ . '/../vendor'),
        ),
    ),
);

index.php

include_once 'private/vendor/autoload.php';

$application = Zend\Mvc\Application::init(include 'private/config/main.config.php');
return $application;

composer.json

{
    "repositories": [
        {
            "type": "composer",
            "url": "http://packages.zendframework.com/"
        }
    ],
    "require": {
        "php": ">=5.3.3",
        "zendframework/zendframework": "2.*"
    },
    "autoload": {
        "psr-0": {
            "Application\\": "module/Application/src"
        }
    }
}

アプリケーション構成

return array(
    'router' => array(
        'routes' => array(
            'home' => array(
                'type' => 'Zend\Mvc\Router\Http\Literal',
                'options' => array(
                    'route' => '/',
                    'defaults' => array(
                        'controller' => 'Application\Controller\Index',
                        'action' => 'index',
                    ),
                ),
            ),
        ),
    ),
    'controllers' => array(
        'invokables' => array(
            'Application\Controller\Index' => 'Application\Controller\IndexController'
        ),
    ),
);

インデックスコントローラー

namespace Application\Controller;

use Zend\Mvc\Controller\AbstractActionController;

class IndexController extends AbstractActionController {

    public function indexAction() {
        die("app ok");
    }

}
4

1 に答える 1

1

まず、私が見たところ、アプリケーションを実行していません:

$application = Zend\Mvc\Application::init(include 'private/config/main.config.php');
$application->run();

もう 1 つのポイントは、モジュールをロードするために composer を使用する必要がないことです。アプリケーション構成には既にmoduleディレクトリが含まれているため、モジュールの読み込みプロセスはディレクトリを自動的にスキャンし、モジュール クラスのレベルで定義された読み込み戦略を使用します。

于 2013-01-29T16:36:20.643 に答える