duannai5879 2010-10-19 19:44
浏览 66
已采纳

Zend似乎不想加载我创建的表单

Hey, I seem to be climbing a pretty horrible learning curve. It's taking me hours to even get to the point where I can structure/write code. I originally wanted to be able to store a form or a model inside its respective module, for example: ./application/module/ModuleName/forms/ClassName.php but when I tried to instantiate a class with: $form = new ModuleName_Form_ClassName(); it failed. Therefore, I thought I would simplify everything by moving it to the default module. However it still isn't working. I'm still doing something wrong. I've no idea what.

Inside my controller action I have this:

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

On loading the action, I get this error message:

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

My application.ini contains:

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

The form is stored inside ./application/modules/default/forms/Login.php

1. How can I troubleshoot this? The error message I am getting is next to useless.

2. I really think all of my problems might be solved if there was some way of debugging the __autoload() function. Is there not?

3. Can there not be a way of using models/forms from another Module inside the default module? That is what I wanted to do. I thought it would make everything more structured. If this isn't possible I just can't see how this would be useful at all...

Cheers,

An ailing newbie Zend developer.

  • 写回答

1条回答 默认 最新

  • duanfu3634 2010-10-19 21:08
    关注

    Sounds like you almost had it the first time. Let's say your module is Users and your form Login. In order for application/module/users/forms/Login.php to work:

    • The form class defined in that file needs to be called Users_Form_Login
    • You need resources.modules[] = in your application.ini to initialise the module resource (which you have)
    • You need a module bootstrap for that module (this is what sets up the module autoloader). So minimally you need a bootstrap class like this:

    .

    class Users_Bootstrap extends Zend_Application_Module_Bootstrap
    {
    
    }
    

    defined at application/module/users/Bootstrap.php. The paths are case sensitive.

    I agree that the autoloader can be quite difficult to debug, unfortunately it's one of those things that either works or it doesn't, but once you have it setup you can forget about it. Hopefully the above will answer your third question - yes you can use forms from another module inside the default one.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看