2011-04-20 71 views
0

我有一个auth模块,并且希望在模块的forms文件夹中保留Login表单。我有我的类名为Auth_Form_Login我用实例它authIndex控制器代码:为什么我的表单不能使用我的模块?

$loginForm = new Auth_Form_Login($_POST); 

然而,Zend公司抱怨说,它无法找到类。我究竟做错了什么?

编辑

我的目录结构如下所示:

application 
    configs 
    layouts 
    modules 
     auth 
      controllers 
      models 
      views 
       forms  <--- This is what I want to autoload from 
     default 
      controllers 
      models 
      views 

library 
public 

此外,模块设置正确:

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" 
resources.frontController.params.prefixDefaultModule = false 
+0

你有到位的'Admin'模块的引导? – Vika 2011-04-20 14:40:00

回答

1

似乎像你缺少Auth模块的引导程序:

application 
    modules 
     auth 
      Bootstrap.php 

可能由这只行 - 只是为了让自动加载魔工作:

class Auth_Bootstrap extends Zend_Application_Module_Bootstrap {} 
+0

啊,这是有道理的。但是,它仍然不起作用。我的应用程序有一个名称空间“SomeName”,用于控制器插件(例如'SomeName_Controller_Plugin_Test')。我需要Auth模块中任何地方的'SomeName'命名空间吗?例如,我是否需要'SomeName_Auth_Form_Login'或类似的东西? – 2011-04-20 14:52:21

+0

我想我刚才提到的是这个问题,因为我得到的错误是这样的:'ErrorController中发现的应用程序错误:异常'ErrorException'带有'include_once(SomeName \ Auth \ Form \ Login.php)'消息。或者基本路径设置不正确,或者有更多的命名空间问题 – 2011-04-20 14:53:38

+0

不,你不需要这样做另一件需要检查的事情是你是否像下面这样初始化你的'application.ini'中的模块:'resources.modules [ ] =' – Vika 2011-04-20 14:55:45

1

你就在你的形式初始化无所不为。自动加载器根本不知道在哪里找到它,所以你需要正确设置zend自动加载器。

我不知道你是如何创建你的基于模块的结构。我使用配置一切的cli tool

所以在我的application.ini文件我有:

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" 
resources.modules = '' 
resources.frontController.params.prefixDefaultModule = "1" 

在我Boostrap.php:

$modelLoader = new Zend_Application_Module_Autoloader ( 
         array ('namespace' => '', 'basePath' 
             => APPLICATION_PATH . 
              '/modules/default')); 

您还可以设置的autoloader manually by registering your resources

$resourceLoader = new Zend_Loader_Autoloader_Resource(array(
    'basePath' => 'path/to/my/directory', 
    'namespace' => 'Auth', 
    'resourceType' => array(
     'form' => array(
      'path' => 'forms/' 
      'namespace' => 'Form' 
     ) 
     //...your code 
    ) 
    ) 
); 
+0

我的basePath应该是什么?我已将我的目录结构添加到我的问题中。 – 2011-04-20 14:42:03

+0

你有一个错误的项目结构,表单文件夹必须放在auth目录中,而不是auth的视图目录 – 2011-04-20 15:03:37

+0

好吧,我已经移动它,但它仍然给我这个错误:'ErrorController中捕获的应用程序错误:异常'ErrorException'与消息'include_once(SomeName \ Auth \ Form \ Login.php)...' – 2011-04-20 15:05:56

相关问题