0

Zend Framework 2.0 を使い始めたばかりで、独自のリソースをロードしたいと考えていました。

私自身のライブラリ PWS はライブラリ フォルダにあります。

FrontController リソースをオーバーライドするには、次のファイル PWS/Application/Resource/FrontController.php を用意します。

<?php

namespace PWS\Application\Resource;

class FrontController extends \Zend\Application\Resource\FrontController
{

    public function init()
    {
        return parent::init()
    }
}

私のapplication.iniには、次の関連行があります。

autoLoaderNamespaces.PWS = APPLICATION_PATH "/../library/PWS"
pluginPaths.PWS\Application\Resource\ = APPLICATION_PATH "/../library/PWS/Application/Resource"

プロジェクトはモジュールを使用していますが、これが問題に影響を与えるとは思いません。

クラス ResourceLoader (リソースへのハードコーディングされたパスを含む) をデバッグしたとき、独自のリソースの代わりに FrontController をロードするために使用されました。

緊急ではありませんが、迷惑です:)

4

2 に答える 2

0

いくつかの面倒なデバッグの後、カスタムリソースをロードする方法を見つけました。

ブートストラップファイルに次の関数を挿入しました。

function _initResources() 
{
     $broker = $this->getBroker();
     $broker->getClassLoader()->registerPlugin('frontcontroller', 'PWS\Application\Resource\FrontController');
}

これにより、ResourceLoaderのハードコードされたフロントコントローラーパスが自分のクラスに置き換えられます。

この方法では、自分のリソース名前空間からすべてのリソースを一度にロードできないため、これはまだ私が望んでいたことではありません。そして、application.iniのpluginPaths変数はその仕事をしません。ただし、Zendは適切なクラスを見つけるためにディレクトリを反復処理する必要がないため、この方法の方が高速です。

いくつかのドキュメントが含まれているZF2リリースを待たなければならないと思います。

于 2011-05-19T11:51:52.277 に答える
0

リソースは大文字と小文字を区別しますか? 「FrontController」ではなく「Frontcontroller」であることはわかっています。
試してみませんか?ここには他にあまりありません... :]

(これは、2 ではなく、ZF1 での私の経験によるものです)

于 2011-05-17T20:33:33.107 に答える