我在使用zend框架创建模块化应用程序时遇到问题,我多次学习了更多的教程和模块,但我总是得到同样的错误。
我的申请结构如下图所示。
+网站
应用
+ CONFIGS
+模块
admin
default
+ bootstrap.php中
文档
文库
公共
测试
在每个模块中,我有一个扩展Zend_Application_Module_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]
怎么了?
答案 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');
}