1

Zend フレームワークでモジュラー アプリケーションを作成する際に問題が発生しました。さらに多くのチュートリアルとモジュールを何度か調べましたが、常に同じエラーが発生します。

私のアプリケーションの構造は次の図のとおりです。

+サイト

  • 応用

    +設定

    +モジュール

      admin
    
      default
    

    +Bootstrap.php

  • ドキュメント

  • 図書館

  • 公衆

  • テスト

各モジュールには、クラス Zend_Application_Module_Bootstrap を拡張するクラスがあり、それぞれ次のとおりです。

  • Admin_Bootstrap
  • Default_Bootstrap

私のapplication.iniファイルは次のとおりです。

[production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
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

;module support
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.modules[] = ""
resources.frontController.params.prefixDefaultModule = "1"
resources.frontController.defaultModule="default"
;end module support
[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1

URL にアクセスしようとすると問題ありませんが、URL にアクセスhttp://localhost/site.it/public/しようとするとhttp://localhost/site.it/public/admin エラーが発生します 要求された URLhttp://localhost/site.it/public/adminがこのサーバーで見つかりませんでした。

ファイル .htaccess は次のもので構成されています。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

どうしたの?

4

1 に答える 1

0

毎回 public と書く必要がないように、 siteit.localhost などのエイリアスを使用することをお勧めします。これで問題が解決するかもしれませんが、何か追加する必要があります。モジュール admin では、コントローラの名前の前に Admin がありますか?

お気に入り

class Admin_IndexController extends Zend_Controller_Action {...

ちなみに、私たちのコードでは、このようにすべてのフォルダーをモジュールに含めています (サブビューを使用しない場合は、サブビュー行を削除してください)。

define('ROOT_DIR', realpath(dirname(__FILE__) . '/../'));

$modules = array('admin', 'foo' , 'asdasd');

foreach ($modules as $module) {
    set_include_path(get_include_path() . PATH_SEPARATOR . ROOT_DIR . '/application/modules/' . $module . '/models');
    set_include_path(get_include_path() . PATH_SEPARATOR . ROOT_DIR . '/application/modules/' . $module . '/forms');
    set_include_path(get_include_path() . PATH_SEPARATOR . ROOT_DIR . '/application/modules/' . $module . '/views');
    set_include_path(get_include_path() . PATH_SEPARATOR . ROOT_DIR . '/application/modules/' . $module . '/controllers');
    $subview->addBasePath(get_include_path() . PATH_SEPARATOR . ROOT_DIR . '/application/modules/' . $module . '/views');
}
于 2013-02-11T21:43:31.697 に答える