2

Rob Allen の「Getting Started with Zend Framework」から Zend フレームワークを学ぼうとしています。与えられたのと同じ例を使用しましたが、エラーが発生しました-

致命的なエラー: クラス 'Application_Model_DbTable_Albums' が /var/www/html/workbench/sreekantk/zf-tutorial/application/controllers/IndexController.php の 14 行目に見つかりません。

models フォルダーへのパスを設定する必要があると思いますが、その方法がわかりません。誰でも私を助けてくれませんか。

これは私のBootstrap.phpファイルです。

// アプリケーション/Bootstrap.php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
    {
    protected function _initAutoload()
    {
        $autoloader = new Zend_Application_Module_Autoloader(array(
            'namespace' => '',
            'basePath'  => APPLICATION_PATH.'/application/modules'));
        return $autoloader;
    }

}

Just H に感謝します。うまくいきました。実際には、フォルダー構造を変更し、再度ファイルに追加appnamespace="Application"した後です。application.iniコメントありがとうございます。

4

4 に答える 4

2

コントローラに到達する限り、プライマリセットアップは問題ないようです。したがって、別のファイルにクラスがある場合、問題はおそらくどこかにある単純なタイプミスです。

a)以下のすべてで、小文字/大文字に
注意してくださいb)モデルフォルダは複数形であるのに対し、クラスは単数
形であることに注意してください c)クラスの名前がApplication_ Model _DbTable_Albumsで
あることを確認してくださいd)ファイルの名前が付けられていることを確認しAlbums.phpてください名前の付いたフォルダapplication/models/DbTable

ZFを学ぶ幸運

于 2011-08-08T14:28:12.247 に答える
1

バージョン 1.9.2 以降、デフォルト モジュールは、で構成された名前空間のオートローダーを自動的に初期化しますappnamespace(バニラ インストールではデフォルトで "Application" になります)。メソッドを削除できます_initAutoload()

クラスが に存在しapplication/models/DbTable/Albums.php、名前が付けられている限りApplication_Model_DbTable_Albums、最初の使用時にクラスを自動ロードできるはずです。

パスの大文字と小文字の区別に注意してください。

于 2011-08-09T03:59:52.260 に答える
0

私は同じチュートリアルに従っており、エイドリアンワールドが2011年8月9日13:26に言ったことは、エラーを取り除くのに役立ちました。私のブートストラップは次のとおりです。

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected function _initAutoload()
    {
        $autoloader = new Zend_Application_Module_Autoloader(array(
            'namespace' => '',
            'basePath'  => APPLICATION_PATH.'/application/models'));
        return $autoloader;
    }
}

変更されたのはモジュールからモデルへの移行だけでした

于 2012-03-29T03:09:05.220 に答える
0

現在のモジュールの Bootstrap クラスを定義する必要があります。それなら大丈夫です。

于 2013-04-06T15:13:22.867 に答える