0

私はこれらの詳細でアプリケーションを作成しました:

1- zf create project MyApp

2- zf create モジュール管理者

3- zf create controller インデックス 1 管理者

MyApp/application/modules/admin/controllers/IndexController.php :

class admin_IndexController extends Zend_Controller_Action
{

    public function init()
    {
        error_reporting(E_ALL);
        ini_set('display_errors', 'On');
    }

    public function indexAction()
    {

        $aa = new Admin_Model_DbTable_Posts();

    }

}

アプリケーション.ini:

[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0 
includePaths.library = APPLICATION_PATH "/../library" 
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap" 
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"

MyApp/application/modules/admin/models/DbTable/Posts.php :

class Admin_Model_DbTable_Posts extends Zend_Db_Table_Abstract    
{
    public function init()
    {

    }
}

この時点で、次のエラーが表示されます。

Fatal error: Class 'Admin_Model_DbTable_Posts' not found in /var/www/MyApp/application/modules/admin/controllers/IndexController.php on line 16

そして、この行をapplication.iniに置くと

resources.modules[] =

そして、これらのコンテンツを含む admin フォルダーに bootstratp.php を追加します。

class Admin_Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{

}

長期間のリクエストの後、次のエラーが発生します。

HTTP Error 500 (Internal Server Error): An unexpected condition was encountered while the server was attempting to fulfill the request.

それを機能させるにはどうすればよいですか?

4

3 に答える 3

1
class Admin_Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{

}

する必要があります

class Admin_Bootstrap extends Zend_Application_Module_Bootstrap
{

}

Module_Bootstrapを使用すると、アプリケーションにモジュール アセットを提供できます。他の変更はしません。

前の回答は無視してください。標準設定を使用していない場合は良いアドバイスですが、設定は明らかに標準です。admin_IndexController でadminを大文字にする必要があるかもしれませんが、そうでないかもしれません。

于 2012-12-28T13:53:19.300 に答える
1

あなたに役立つヒント

  • 次のコマンドを使用して、application.ini にモジュールを明示的にロードします。
    resources.modules[] = "管理者"
    resources.modules[] = "デフォルト"
  • application.ini ファイル内の文字列リテラルには、"単一引用符ではなく二重引用符を使用してください。'

  • Admin_Model_DbTable_Postsが見つからない場合は、zend_autoloader またはインクルード パスが完全ではありません。Bootstrap.ini 内の次のコードを使用して、フォールバック オプションを使用するように zend オートローダーを設定できます。

保護された関数 _initAutoload()
{
    $autoloader = Zend_Loader_Autoloader::getInstance();
    $autoloader->registerNamespace(array('Admin_'));
    $autoloader->setFallbackAutoloader(true);
    $autoloader->suppressNotFoundWarnings(false);   
    $autoloader を返します。
}

それが役に立てば幸い!

于 2012-12-28T12:24:28.570 に答える
0

私はshawndreckとRokyFordの答えを組み合わせることで問題を解決しました。両方のテーマに感謝します。私は実際にapplication.iniファイルを過剰に構成しました。私は次のことをしました:

別の単純なプロジェクトを再作成しましたが、正常に機能するため、2つのプロジェクトファイルを比較します。

それから私はそれを変えることで理解します

Zend_Application_Bootstrap_Bootstrap

Zend_Application_Module_Bootstrap

そして、resources.modules [] = "admin"をapplication.iniに入れると、動作します。

  • application.iniを制限しすぎると、Zend-Frameworkで多くの問題が発生することがあります-少なくとも私にとっては、これは頻繁に発生します- 。
于 2012-12-28T20:03:41.087 に答える