Zend Framework中的Modulel不起作用

时间:2013-02-08 21:19:08

标签: zend-framework

我在使用zend框架创建模块化应用程序时遇到问题,我多次学习了更多的教程和模块,但我总是得到同样的错误。

我的申请结构如下图所示。

+网站

  • 应用

    + CONFIGS

    +模块

      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

如果我尝试访问网址http://localhost/site.it/public/即可,但如果我尝试访问网址http://localhost/site.it/public/admin,则会收到错误请求的网址http://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]

怎么了?

1 个答案:

答案 0 :(得分:0)

你最好使用像siteit.localhost这样的别名,这样你就不需要每次都公开。这可以解决你的问题,但我需要添加一些东西;在模块管理员中,控制器是否在其名称之前有管理员?

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');
}