2

嘿,我似乎正在攀登一条非常可怕的学习曲线。我甚至要花几个小时才能达到可以构造/编写代码的地步。我最初希望能够在其各自的模块中存储表单或模型,例如:./application/module/ModuleName/forms/ClassName.php 但是当我尝试使用以下命令实例化一个类时: $form = new ModuleName_Form_ClassName( ); 它失败了。因此,我想通过将其移至默认模块来简化一切。但是它仍然无法正常工作。我仍然在做错事。我不知道是什么。

在我的控制器动作中,我有这个:

// some other code
$form = new Form_Login();

在加载操作时,我收到以下错误消息:

Fatal error: Class 'Form_Login' not found in /some folder/www/application/modules/default/controllers/AdministrationController.php on line 22

我的 application.ini 包含:

appnamespace = "SomeModule"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.modules[] = 

表单存储在 ./application/modules/default/forms/Login.php

1. 我该如何解决这个问题?我收到的错误消息几乎没用。

2. 我真的认为如果有某种方法可以调试 __autoload() 函数,我的所有问题都可以解决。没有吗?

3. 不能在默认模块中使用来自另一个模块的模型/表单吗?这就是我想做的。我认为这会让一切变得更有条理。如果这是不可能的,我根本看不出这会有什么用......

干杯,

一个生病的新手 Zend 开发人员。

4

1 回答 1

5

听起来你几乎第一次拥有它。假设您的模块是用户和您的表单登录。为了application/module/users/forms/Login.php工作:

  • 需要调用该文件中定义的表单类Users_Form_Login
  • 您需要resources.modules[] = 在 application.ini 中初始化模块资源(您拥有)
  • 您需要该模块的模块引导程序(这是设置模块自动加载器的内容)。所以至少你需要一个像这样的引导类:

.

class Users_Bootstrap extends Zend_Application_Module_Bootstrap
{

}

定义于application/module/users/Bootstrap.php。路径区分大小写。

我同意自动加载器可能很难调试,不幸的是它是其中一种可以工作或不能工作的东西,但是一旦你设置了它,你就可以忘记它了。希望以上内容能回答您的第三个问题 - 是的,您可以在默认模块中使用来自另一个模块的表单。

于 2010-10-19T21:08:07.683 回答