2

フロントエンド モジュールとバックエンド モジュールを使用してモジュール式の Zend Framework プロジェクトをセットアップしようとしていますが、うまく動作しません。publicWeb ブラウザで自分のディレクトリにアクセスすると、次のエラー メッセージが表示されます。

致命的なエラー: /usr/share/ZendFrameworkCli/library/Zend/Controller/Dispatcher/Standard.php:248 でメッセージ 'Invalid controller specified (error)' を含む例外 'Zend_Controller_Dispatcher_Exception' をキャッチできませんでした: 248 スタック トレース: #0 /usr/share/ZendFrameworkCli /library/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #1 /usr/share/ZendFrameworkCli/library/Zend/Application/Bootstrap/Bootstrap.php( 97): Zend_Controller_Front->dispatch() #2 /usr/share/ZendFrameworkCli/library/Zend/Application.php(366): Zend_Application_Bootstrap_Bootstrap->run() #3 /Users/Martin/Dropbox/Repositories/realestatecms/public/ index.php(25): Zend_Application->run() #4 {main} 次の例外 'Zend_Controller_Exception'「無効なコントローラーが指定されました (エラー)#0 /usr/share/ZendFrameworkCli/library/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) in /usr/」というメッセージが表示されます336 行目の share/ZendFrameworkCli/library/Zend/Controller/Plugin/Broker.php

Zend Framework コマンド ライン ツールを使用して 2 つのモジュールを作成しました。これらの 2 つのmoduleディレクトリには、それぞれBootstrap.php呼び出された と に 2 つのクラスがあります。Frontend_BootstrapBackend_Bootstrap

私のapplication.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 "/frontend/controllers"
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.frontController.params.displayExceptions = 0
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"
...

私は何を間違えましたか?ブラウザでhttp://example.com/publicFrontend_IndexController()にアクセスしたときに実行するにはどうすればよいですか?

編集: Ivan の回答に従って構成ファイルを更新すると、次のエラー メッセージが表示されます。

致命的なエラー: /usr/share/ZendFrameworkCli/library/Zend/Application/Resource/Modules.php:83 スタックで、「モジュール "default" のブートストラップ ファイルが見つかりましたが、ブートストラップ クラス "Default_Bootstrap" が見つかりません」というメッセージを含む例外 'Zend_Application_Resource_Exception' がキャッチされませんでした:83 スタックtrace: #0 /usr/share/ZendFrameworkCli/library/Zend/Application/Bootstrap/BootstrapAbstract.php(683): Zend_Application_Resource_Modules->init() #1 /usr/share/ZendFrameworkCli/library/Zend/Application/Bootstrap/BootstrapAbstract .php(626): Zend_Application_Bootstrap_BootstrapAbstract->_executeResource('モジュール')

2 /usr/share/ZendFrameworkCli/library/Zend/Application/Bootstrap/BootstrapAbstract.php(586):

Zend_Application_Bootstrap_BootstrapAbstract->_bootstrap(NULL) #3 /usr/share/ZendFrameworkCli/library/Zend/Application.php(355): Zend_Application_Bootstrap_BootstrapAbstract->bootstrap(NULL) #4 /Users/Martin/Dropbox/Repositories/realestatecms/public/index .php(25): Zend_Application->bootstrap() #5 {main} が /usr/share/ZendFrameworkCli/library/Zend/Application/Resource/Modules.php の 83 行目でスローされました

Default_Bootstrapクラス名としての由来は? !

4

3 に答える 3

1

私は同じ問題を抱えていましたが、このページで解決策を見つけました: http://updel.com/zend-framework-modular-application/

/MyApp/application/configs/application.ini の次の行をコメントする必要があります。

resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"

このような:

;resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"

残念ながら、私はその理由を説明/理解するのに十分なスキルがありません。申し訳ありません。:-)

それが役立つことを願っています。

于 2012-04-24T10:19:57.703 に答える
0

この行を変更しましたか:

resources.frontController.controllerDirectory = APPLICATION_PATH "/frontend/controllers"

私はそれが次のようであるべきだと思います:

resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"

次に、インデックス/インデックス以外のデフォルトのモジュール/コントローラーが必要な場合は、次の構成オプションを使用します。

resources.frontController.defaultControllerName = "index"
resources.frontController.defaultAction = "index"
resources.frontController.defaultModule = "frontend"

また、 http://yoursite.com/publicにアクセスしないでください。エラーが発生します。パブリック ディレクトリは Web DocumentRoot である必要があり、次のようにアクセスします: http://yoursite.com/

于 2012-01-10T23:33:16.983 に答える
0

Martin さん、http: //example.com/public を呼び出すと、ルーターがpublicという名前のコントローラーを探しているため、Zend Framework はあなたが見たエラーをスローします。Zend Frame の作業 Web サイトを表示する通常の方法は、http://example.comまたはhttp://example.com/index.phpを呼び出すことです。アプリケーションへのすべてのリクエストは、 /application/public/index.php経由でルーティングされます。

次の元の構成のように見えます。

resources.frontController.controllerDirectory = APPLICATION_PATH "/frontend/controllers"

あなたのアプリケーションにはおそらく正しかったでしょう。

これらは、モジュールを有効にするためのapplication.iniの典型的な行です。

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.frontController.moduleControllerDirectoryName = "controllers"
resources.frontController.params.prefixDefaultModule = ""//Frontend may be your default
resources.modules = ""

構造によって若干の違いがある場合があります。また、通常、各モジュール ディレクトリに、 *Zend_Application_Module_Bootstrap* を拡張する独自のbootstrap.php
を含めると便利です。

class Admin_Bootstrap extends Zend_Application_Module_Bootstrap {
    //put your code here
}

これで問題が解決しない場合は、ディレクトリ構造と application.ini を含めてください (db 設定などは省略できます)。デフォルトから変更されている場合は、Index.php が役立ちます。
また、Zend Framework のバージョンも含めてください。

于 2012-01-15T09:25:34.933 に答える