1

次のディレクトリ構造を持つ Zend プロジェクトがあります。

/myApp
  /application
    Bootstrap.php
    /configs
      application.ini
    /layouts
    /modules
      /default
        /controllers
          MessageController.php
          ErrorController.php
          IndexController.php
        /models
          /DbTable
            Message.php
          Message.php
          MessageMapper.php
        /views
        Bootstrap.php
      /login
        /controllers
        /forms
        /library/login
        /models
        /plugins
        /views
        Bootstrap.php
  /data/db
  /library/zend
  /public

http://localhost/ - 正常に動作しますが、デフォルト モジュール内のログイン モジュールとメッセージを動作させることができません。次のエラーが表示されます。

致命的なエラー: 14 行目の /Library/WebServer/Documents/myApp/application/modules/default/controllers/MessageController.php にクラス 'Application_Module_Default_Model_MessageMapper' が見つかりません

必要なものを初期化していないと確信しています。ここに私のコードがどのように見えるか..

アプリケーション.ini

autoloaderNamespaces[] ="Message_"
autoloaderNamespaces[] ="Login_"
autoloadernamespaces.0 = "Zend_"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.frontController.moduleControllerDirectoryName = "controllers"
resources.frontController.defaultControllerName = "index"
resources.frontController.defaultActionName = "index"
resources.frontController.params.displayExceptions = 0
resources.frontController.defaultModule = "default"
resources.frontController.params.prefixDefaultModule = "1"
resources.frontController.plugins[] = "Login_Plugin_SecurityCheck"
resources.modules = ""

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

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected function _initDoctype()
  {
    $this->bootstrap('view');
    $view = $this->getResource('view');
    $view->doctype('HTML5');
  }
}

/public/index.php

set_include_path(implode(PATH_SEPARATOR, array(
realpath(APPLICATION_PATH . '/../library'),
get_include_path(),
)));

require_once 'Zend/Application.php';
require_once('Zend/Loader/Autoloader.php');
$autoloader = Zend_Loader_Autoloader::getInstance();

/module/default/controllers/MessageController.php

$message = new Application_Module_Default_Model_MessageMapper();
$this->view->entries = $message->fetchAll();

詳細が役立つかどうか教えてください。どんな助けでも大歓迎です。

4

3 に答える 3

2

やってみました:

$message = new Default_Model_MessageMapper(); 

また、モジュールBootstrap.phpファイルにモジュールを自動ロードしていますか?ZFを使用してからどれだけ変化したかはわかりませんが、これを含める必要がありました。

$loader = new Zend_Application_Module_Autoloader(array(   
    'namespace' => 'Default_',
    'basePath'  => '/path/to/modules/default'
));
于 2011-09-01T16:11:24.093 に答える
0

私も同じ問題を抱えていましたが、私の原因は非常に単純でした

フォームForm_Template_AddとコントローラーTemplateControllerがありました。コントローラーからフォームを呼び出しました-newForm_Template_Add();

私のフォームはフォルダテンプレートにあります。

問題はフォルダ名にありました。テンプレートの「t」はスモールキャップスであり、コントローラとクラス名の「T」はキャップスです。フォルダ名をテンプレートに変更しましたが、うまくいきました... hooya

于 2012-10-13T05:28:12.707 に答える
0

各モジュール ディレクトリに Bootstrap.php が作成されていることを確認してください。

class Admin_Bootstrap extends Zend_Application_Module_Bootstrap
{}

Admin はモジュールの名前です。また、ディレクトリ modules/admin/forms 内に Admin_Form_Login クラスを持つファイル Login.php が実際にあることを確認してください。

[Zend_Form][1.11.1] エラー メッセージ Fatal error: Class 'Admin_Form_Login' not found in ...\modules\default\controllers\IndexController.php

于 2014-04-26T19:21:35.030 に答える