0

現在、bootstrap.php ファイルをより整理している最中ですが、すべてを個別の静的メソッドに配置した後、インデックス コントローラー以外のページを読み込むことができません。たとえば、開こうとすると

http://localhost/zftutorial/login/index

私は得る

    Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 
'Invalid controller class ("Login_IndexController")' in C:\Program 
Files\VertrigoServ\www\library\Zend\library\Zend\Controller\Dispatcher\Standard.php:341 
Stack trace: #0 C:\Program 
Files\VertrigoServ\www\library\Zend\library\Zend\Controller\Dispatcher\Standard.php(255): 
Zend_Controller_Dispatcher_Standard->loadClass('IndexController') #1 C:\Program 
Files\VertrigoServ\www\library\Zend\library\Zend\Controller\Front.php(934): 
Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), 
Object(Zend_Controller_Response_Http)) #2 C:\Program 
Files\VertrigoServ\www\zftutorial\public\index.php(18): Zend_Controller_Front->dispatch() 
#3 C:\Program Files\VertrigoServ\www\zftutorial\public\index.php(138): Bootstrap::run() #4
 {main} thrown in C:\Program 
Files\VertrigoServ\www\library\Zend\library\Zend\Controller\Dispatcher\Standard.php on 
line 341

私のブートストラップファイルでは、コントローラーが見つかる場所を定義したようです:

public static function setupFrontController()
{
    self::$frontController = Zend_Controller_Front::getInstance();
    self::$frontController->throwExceptions(true);
    self::$frontController->returnResponse(true);
    self::$frontController->setBaseUrl('/zftutorial');

    self::$frontController->setControllerDirectory(
        array(
            'default' => self::$root . '../application/controllers',
            'admin' => self::$root . '../application/controllers',
            'index' => self::$root . '../application/controllers',
            'login' => self::$root . '../application/controllers',
            'user' => self::$root . '../application/controllers'
        )
    );

    self::$frontController->setParam('registry', self::$registry);

}

おそらくルーティングで何かを行う必要がありますが、私のアプリは以前は暗黙的なルーティングでうまく機能していました。たとえば、他のコントローラーもうまく機能していました。上記のエラーの原因は何ですか? どうすればテスト/検索/修正できますか?

4

1 に答える 1

0

スタック トレースを見ると、エラーはInvalid controller class ("Login_IndexController") です

これは、クラス Login_IndexController が存在しないことを示しています。

ログインモジュールのコントローラディレクトリに IndexController.php というファイルが必要です。2 つのモジュールが同じ名前のコントローラーを持つことはできないため、現在の構造は機能しません。に構造を変更します。

self::$frontController->setControllerDirectory(
        array(
            'default' => self::$root . '../application/modules/default/controllers',
            'admin' => self::$root . '../application/modules/admin/controllers',
            'index' => self::$root . '../application/modules/index/controllers',
            'login' => self::$root . '../application/modules/login/controllers',
            'user' => self::$root . '../application/modules/user/controllers'
        )
    );

self::$root に IndexController.php を作成します。'../application/modules/login/controllers クラスが Login_IndexController と呼ばれていることを確認します

于 2009-04-09T12:17:11.720 に答える