2011-02-25 6 views
1

Je reçois cette erreur que dois-je faire?Zend Classe de classe erreur non trouvée

Fatal error: Class 'forms_AuthForm' not found in C:\dev\workspaces\ 
adxweb\application\adxsearch\modules\account\controllers\ 
AuthController.php on line 26 

J'ai une AuthForm.php dans forms dossier et Authcontroller.php dans le dossier controllers et auth.phtml dans le dossier scripts.

Merci Kiran

+0

Veuillez indiquer l'emplacement exact du répertoire des formulaires. Zend n'a apparemment pas été informé de l'endroit où se trouvent vos formulaires et ne regarde pas au bon endroit. – mingos

+1

En outre, pensez à renommer la classe en 'Form_AuthForm'. La partie 'Form' est interprétée comme" look dans le répertoire 'forms'". – mingos

+0

le répertoire des formulaires est modules/account/forms .. et dans AuthForm.php il sera comme cette classe forms_AuthForm extends Zend_Form – kiran

Répondre

1

Le chemin par défaut pour les formulaires dans les projets ZF est APPLICATION_PATH/formes, comme celle-ci:

-- application 
    -- forms 
     AuthForm.php 
    -- models 
    -- modules 
     -- account 
      -- controllers 
       AuthController.php 
      -- views 
       -- helpers 
       -- scripts 
        -- auth 
         index.phtml 
         ... 

Si vous souhaitez placer vos formulaires ailleurs, vous aurez besoin de dire Zend où cet emplacement est (il peut être fait dans le bootstrap ou, je pense, dans application.ini). En outre, assurez-vous que vos classes sont nommées de manière appropriée, car elles reflètent les chemins d'accès aux fichiers dans lesquels elles sont contenues. Les noms sont sensibles à la casse.

[EDIT]

Lire cet article: http://bsagols.wordpress.com/2010/08/12/zend_loader_autoloader-stand-alone-and-modular-approaches/ - il décrit ce que vous semblez être après (approche modulaire, avec des formes par module).

Cependant, c'est le long chemin. La façon dont je le résoudreais est de déplacer vos formulaires à application/forms. Vous pouvez créer des dossiers spécifiques au module là, comme ceci:

--application 
    -- forms 
     -- Auth 
      Auth.php 

Vous formez nom de classe serait alors Namespace_Form_Auth_Auth, où Namespace est votre espace de noms d'application. Cette approche ne nécessite aucune modification du bootstrap ou application.ini.

+0

@ mingos..thanks et ce qui devrait écrire le code dans le bootstrap ou l'application.fichier ini? – kiran

+0

Voir la réponse éditée. – mingos

1

Essayez $form = new Application_Form_AuthForm() au lieu de $form = new forms_AuthForm() dans votre fichier contrôleur AuthController.php

et assurez-vous que vous avez dans votre class Application_Form_AuthForm extends Zend_Formforms/authform.php.

Si vous souhaitez supprimer l'espace de noms Application puis dans votre fichier application.ini mis appnamespace = "Application"-appnamespace =

+0

@experimentX ... Ouais j'ai essayé votre chemin mais je reçois la même erreur ... – kiran

+0

@kiran pouvez-vous ajouter votre structure de répertoire à la question et le code dans le fichier 'controller 'et' form' –

1

Si vous utilisez la structure de répertoire modulaire:

// application/modules/modulename/forms/Name.php 
class Modulename_Form_Name extends Zend_Form { 
    public function init() { 
    $this->addElements(array(/** */)); 
    } 
} 

Ensuite, aucune configuration supplémentaire est nécessaire, sauf resources.modules[]= en application.ini et un module bootstrap pour module modulename.