2010-12-04 12 views
0

zend frameworkerでfrontcontrollerプラグインを使用すると、オートローダーの前に実行されているようです。私はどのようにこれを行う必要がありますか?私app.iniFrontcontrollerプラグインがロードされない

resources.frontController.plugins.routes = "Plugin_Routes" 

プラグイン/ routes.phpの

class Plugin_Routes extends Zend_Controller_Plugin_Abstract { 
} 

エラーメッセージの

は...

致命的なエラー:クラスのPlugin_Routes '/は/ usrには見られませんshare/php/Zend/Application/Resource/Frontcontroller.php on line 111

パスはまったくありませんか?

答えて

1

は私が持っていました下記およびドクトリンオートローダ

protected function _initAutoload() { 
     $autoloader = new Zend_Application_Module_Autoloader(array(
        'namespace' => 'Default', 
        'basePath' => dirname(__FILE__), 
       )); 

     return $autoloader; 
    } 
+0

同じ効果..私は、関連する配列と余分な名前空間を持たないことを除いて同じと思います。最初にオートローダをロードするためにブートストラップに何かがありますか? – Chris

+0

ああ、許可をもう一度確認してください! – tawfekov

+0

あなたは正しい方向に私をつかまえました:D名前空間がプラグインに強制されているようです...マニュアルでさえこれについて言及していません:) – Chris

1

そうですか?オートローダは、右のフォルダを見つけるために、クラス名を使用しますので

plugins/Routes.php 

Zendが

Plugin/Routes.php 

期待しています。

My_Class_Something 

は次のようになります。

resources.frontController.plugins[] = "Dagho_Controller_Plugin_Auth" 

、その非常に素晴らしい私のために働い

更新:空想に何もちょうどこれらの行を

My/Class/Something.php 
+0

をこのコードを追加します。しかし、これはディレクトリZendのツールですがなります...同じモジュール/及びコントローラ/は、下部ケースと、複数のですが、あなたのクラス名にあなたがそれらを作るよう首都と単数 エラーメッセージにはインクルードパスもなく、プラグインを登録する前にオートローダーが存在しないと思うようになります。 – Chris

0

は、[OK]をマニュアルには、明確ではない、少なくとも間違っているかのようだ: http://framework.zend.com/manual/1.11/en/zend.controller.plugins.html

何が不足しているが、あなたはそれがで動作しません、他のアプリケーションの名前空間が必要である1.11

app.ini

resources.frontController.plugins.routes = "Application_Plugin_Routes" 

プラグイン

class Application_Plugin_Routes extends Zend_Controller_Plugin_Abstract { } 

OK:

1

何も問題がなければ、オートローダーを試してみてください。

ブートストラップクラスに

protected function _initBlablablaPlugin(){ 

    $autoloader = Zend_Loader_Autoloader::getInstance(); 
    //If your plugin is placed in the /library/My/Plugin/Blablabla, then register the "My_" namespace 
    $autoloader->registerNamespace('My_'); 

    $frontController = Zend_Controller_Front::getInstance(); 
    $frontController->registerPlugin(new My_Plugin_Authorize()); 
} 
関連する問題