【问题标题】:Zend doesn't seem to want to load the form I've createdZend 似乎不想加载我创建的表单
【发布时间】:2011-04-27 16:34:22
【问题描述】:

嘿, 我似乎正在攀登一条非常可怕的学习曲线。我甚至要花几个小时才能达到可以构造/编写代码的地步。我最初希望能够在其各自的模块中存储表单或模型,例如:./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 新手开发人员。

【问题讨论】:

    标签: php zend-framework controller modular


    【解决方案1】:

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

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

    .

    class Users_Bootstrap extends Zend_Application_Module_Bootstrap
    {
    
    }
    

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

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

    【讨论】:

    • 我的猜测也是缺少 Bootstrap 模块 - 这经常被忽略。不幸的是,ZF1 受到一些配置和入门问题的困扰,但我确实认为值得坚持使用该框架提供的好处。 ZF2 应该避免大多数这些问题。
    • 这听起来很对,但是在我的模块中创建一个 Bootstrap.php 文件似乎到处都会导致这种情况:致命错误:允许的内存大小为 134217728 字节用尽(试图分配 71 字节)在 /usr/ share/zend/library/Zend/Loader/Autoloader.php 在第 374 行
    • 看起来这些人和我有类似的问题:forums.zend.com/viewtopic.php?f=69&t=6240 似乎在递归调用 unshiftAutoloader()... ^&*%^&!
    • 是的,那里有一篇文章建议使用 _forward() 指向相同的操作可能会导致这种情况 - 你在做这样的事情吗?
    • 我解决了。当我针对我的模块设置 Bootstrap.php 时,我从应用程序目录中复制了 Bootstrap.php 文件并且没有正确编辑它。这是错误的,因为这个 Bootstrap 副本扩展 Zend_Application_Bootstrap_Bootstrap 而不是 Zend_Application_Module_Bootstrap。无论如何,谢谢你的帮助。 :)
    猜你喜欢
    • 2010-12-07
    • 1970-01-01
    • 1970-01-01
    • 2017-12-12
    • 2019-07-31
    • 1970-01-01
    • 2021-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多