简体   繁体   中英

Zend doesn't seem to want to load the form I've created

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.

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM