2010-09-30 4 views
0

J'ai essayé la mise en place d'un site zend avec la structure de répertoire suivant:problèmes Pour obtenir le formulaire Zend pour travailler

application 
    -configs 
    -forms 
    -modules 
    -admin 
    -default 
     -controllers 
      -IndexController.php 
     -forms 
      -Testform.php 
     -layouts 
     -modules 
     -views 

Puis dans mon IndexController.php j'ai les suivantes

fonction publique contactMeAction() {

$request = $this->getRequest(); 
    $form = new Form_Testform(); 

    if ($this->getRequest()->isPost()) { 
     if ($form->isValid($request->getPost())) { 

// stuff processus

  return $this->_helper->redirector('index'); 
     } 
    } 

    $this->view->form = $form; 

}

dans le fichier Testform.php je

classe Form_Testform étend Zend_Form { public function init() { ...... etc

Mais je Erreur m: Classe 'Form_Testform' introuvable dans /home/websites/test.local/public_html/prototype/application/modules/default/controllers/Ind Erreur d'association fatale: Classe 'Form_Testform' introuvable dans /home/websites/test.local/public_html/prototype/application/modules/default/controllers/Ind exController.php en ligne 22

Stack Appel: 0,0004 325228 1. {main}() /home/websites/test.local/public_html/prototype/public/index.php:0 0,1742 5.351.472 2. Zend_Application- > run() /home/websites/test.local/public_html/prototype/public/index.php:28 0.1742 5351472 3. Zend_Application_Bootstrap_Bootstrap-> run() /opt/ZendFramework-1.10.7/library/Zend/Application. php: 366 0.1745 5351708 4. Zend_Controller_Front-> dispatch() /opt/ZendFramework-1.10.7/library/Zend/Application/Bootstrap/Bootstrap.php:97 0.1872 5707240 5. Zend_Controller_Dispatcher_Standard-> dispatch()/opt/ZendFramework-1.10.7/library/Zend/Contrôleur/Front.php: 954 0.2026 6016200 6. Zend_Controller_Action-> dispatch()/o pt/ZendFramework-1.10.7/library/Zend/Contrôleur/Dispatcher/Standard.php: 295 0.2029 6020692 7. IndexController-> contactMeAction() /opt/ZendFramework-1.10.7/library/Zend/Controller/Action.php : 513

Où est-ce que je vais mal?

Répondre

1

Fondamentalement, ZF ne trouve pas la forme où il s'attend à ce qu'il soit. Je pense que vous devez avoir le formulaire en application/forms, pas en application/modules/default/forms comme vous le faites.

Faites ensuite comme:

Application_Form_Testform extends Zend_Form

au lieu de

Form_Testform extends Zend_Form

--- EDIT ---

Ainsi, dans application/forms vous avez le fichier Testform.php Ce le fichier ressemble à:

class Application_Form_Testform extends Zend_Form { 
// form code 
} 

Dans votre contrôleur vous avez (notez le nom de l'action ...contactmeAction, non contactMeAction):

public function contactmeAction { 
    $form = new Application_Form_Testform(); 
    $this->view->form = $form; 
} 

Alors à votre avis contactme.phtml:

echo $this->form; 

Cela devrait fonctionner. Si ce n'est pas le cas, je vérifierais l'orthographe, la majuscule dans le nom de votre action et je m'assurerais que les choses sont dans le bon chemin.

+0

J'ai essayé, mais cela n'a pas fonctionné. – Paul

+0

Voir ma modification. Cela devrait le réparer (notez le cas du nom de votre action). – Stuart

+0

Je reçois erreur fatale: Classe 'Application_Form_Testform' non trouvé, est-il un moyen d'afficher à l'écran où il essaie de regarder? – Paul

0

Ceci est une question d'obtenir les choses suivantes toutes alignées/cohérentes:

  1. espaces de noms
  2. conventions de nommage des classes
  3. fichier de classe emplacement

Si vous souhaitez mettre votre formulaire dans le dossier application/modules/default/forms, puis nommez la classe Default_Form_Testform.

+0

Le mettre dans ce dossier et le renommer ne fonctionnait malheureusement pas pour moi – Paul

+0

Est-ce que vous déclarez/définissez un espace-noms différent dans une méthode 1. 'configs/application.ini' ou 2. une méthode' Bootstrap :: _ initXXX() ' ? –

0

Vérifier les noms/espaces de noms gaoshan88 dit (doit être "Application_Form_Testform de classe étend Zend_Form" et "forme $ = new Application_Form_Testform()";)

Vérifiez que votre application/configs/application.ini contient ces lignes:

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" 
resources.frontController.defaultModule = "default" 
resources.modules[] = "" 

Enfin, créez un fichier Bootstrap.php vide et placez-le dans le répertoire application/modules/default /.

Questions connexes