Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 25-02-2010 18:45:13

goosy
Nouveau membre
Date d'inscription: 17-02-2010
Messages: 3

[Zend_Loader_Autoloader][1.10] Problème d'auto-inclusion

Bonjour les Z-F membres ,

Je débute dans le framework zend . Je lis en ce moment un "livre-tuto" sous format pdf , Apress - Pro Zend Framework Techniques (09-2009) (ATTiCA) qui permet d'assimiler les bases du framework .

Voici mon problème :

Dans ce livre on montre comment créer un formulaire et l'utiliser .

Ce formulaire permet de  soumettre les bugs rencontrés dans ma phase développement  .

Voici la liste des fichiers :

/application/controller/BugController.php :il contient toutes les actions  lié au controller bug .
/application/forme/BugReporter.php: il contient le script de création du formulaire .
/application/views/script/bug/submit.phtml :il contient le code qui affiche le formulaire .

Voici le code source des fichiers cités ci-dessus :
/application/controller/BugReporter.php

Code:

class Form_BugReportForm extends Zend_Form
{
    public function init()
    {
    // add element: author textbox
    
    $author = $this->createElement('text', 'author');
    $author->setLabel('Enter your name:');
    $author->setRequired(TRUE);
    $author->setAttrib('size', 30);
    $this->addElement($author);
    
    // add element: email textbox
    
    $email = $this->createElement('text', 'email');
    $email->setLabel('Your email address:');
    $email->setRequired(TRUE);
    $email->addValidator(new Zend_Validate_EmailAddress());
    $email->addFilters(array(
    new Zend_Filter_StringTrim(),
    new Zend_Filter_StringToLower()
    ));
    $email->setAttrib('size', 40);
    $this->addElement($email);
    
    // add element: date textbox
    $date = $this->createElement('text', 'date');
    $date->setLabel('Date the issue occurred (mm-dd-yyyy):');
    $date->setRequired(TRUE);
    $date->addValidator(new Zend_Validate_Date('MM-DD-YYYY'));
    $date->setAttrib('size',20);
    $this->addElement($date);
    
    
    // add element: URL textbox
    $url = $this->createElement('text', 'url');
    $url->setLabel('Issue URL:');
    $url->setRequired(TRUE);
    $url->setAttrib('size',50);
    $this->addElement($url);
    
        // add element: description text area
        $description = $this->createElement('textarea', 'description');
$description->setLabel('Issue description:');
$description->setRequired(TRUE);
$description->setAttrib('cols',50);
$description->setAttrib('rows',4);
$this->addElement($description);
    // add element: priority select box
    
    $priority = $this->createElement('select', 'priority');
$priority->setLabel('Issue priority:');
$priority->setRequired(TRUE);
$priority->addMultiOptions(array(
'low' => 'Low',
'med' => 'Medium',
'high' => 'High'
));
$this->addElement($priority);
    
    // add element: status select box
    $status = $this->createElement('select', 'status');
$status->setLabel('Current status:');
$status->setRequired(TRUE);
$status->addMultiOption('new', 'New');
$status->addMultiOption('in_progress', 'In Progress');
$status->addMultiOption('resolved', 'Resolved');
$this->addElement($status);
    // add element: submit button
    $this->addElement('submit', 'submit', array('label' => 'Submit'));
    }
}

---
/application/controller/BugController.php

Code:

<?php

class BugController extends Zend_Controller_Action
{

    public function init()
    {
        /* Initialize action controller here */
    }

    public function indexAction()
    {
        // action body
    }

    public function createAction()
    {
        // action body
    }

    public function submitAction()
    {
    

        $frmBugReport = new Form_BugReport();
$frmBugReport->setAction('/bug/submit');
$frmBugReport->setMethod('post');
$this->view->form = $frmBugReport;
    }


}

---
/application/views/script/bug/submit.phtml

Code:

<h2>Submit a bug report</h2>
<p>To submit a new bug report please fill out this form completely:</p>
<?php
echo $this->form->render();
// echo $this->form; does the same thing
?>

---

Voici mon Bootstrap.php

Code:

protected function _initAutoload()
        {
        // Add autoloader empty namespace
        $autoLoader = Zend_Loader_Autoloader::getInstance();
        
     //Inclusion du dossier /application/form dans le autoloader (prefix Form_)afin d'appeler les class de script correspondant
// sous la forme class Form_BugReporter 
        
$resourceLoader->addResourceType('form', 'forms/', 'Form_');
        $resourceLoader = new Zend_Loader_Autoloader_Resource(array(
        'basePath' => APPLICATION_PATH,
        'namespace' => '',
        'resourceTypes' => array(
        'form' => array(
        'path' => 'forms/',
        'namespace' => 'Form_',
        )
        ),
        ));
                // Return it so that it can be stored by the bootstrap
        return $autoLoader;
        }

J'ai compris le system del'autoloader et je vois déja toute sa puissance ! Mais lorsque je souhaite afficher mon formulaire ( monlocalsite/bug/submit) je reçois le message suivant  :

Fatal error: Class 'Form_BugReport' not found in C:\wamp\www\zf_cms\application\controllers\BugController.php on line 25


Là je bloque comme une voiture dans un bouchon :p
Merci d'avance pour le coup de main

Hors ligne

 

#2 01-03-2010 18:15:33

emo
Nouveau membre
Date d'inscription: 01-03-2010
Messages: 1

Re: [Zend_Loader_Autoloader][1.10] Problème d'auto-inclusion

Salut,
c'est probablement un problème de nommage de la classe de ton formulaire.
Dans ton fichier /application/controller/BugReporter.php  ton formulaire se nomme Form_BugReportForm et tu tente d'instancier  Form_BugReport dans ton controller

Hors ligne

 

#3 01-03-2010 22:46:20

throrin19
Membre
Date d'inscription: 01-03-2009
Messages: 318
Site web

Re: [Zend_Loader_Autoloader][1.10] Problème d'auto-inclusion

ton dossier s'appelle bien:

/application/forme/BugReporter.php

Donc ton formulaire devrait s'appeler Forme_BugReporter extends Zend_Form

Vérifie bien le nom de ton dossier. Ici je vois une faute de frappe

Hors ligne

 

#4 02-03-2010 14:23:08

goosy
Nouveau membre
Date d'inscription: 17-02-2010
Messages: 3

Re: [Zend_Loader_Autoloader][1.10] Problème d'auto-inclusion

Merci pour vos réponses , j'ai trouvé la solution à mon problème. Je me suis tromper dans l'appel de la fonction .
Form_BugReport devient Form_BugReportForm . Et oui c'est comme ça que on perd du temps .

throrin19 chouette si web ! Cela serait cool de faire tuto "creation de blog" ...

Encore merci et à bientôt

Hors ligne

 

#5 02-03-2010 16:21:05

throrin19
Membre
Date d'inscription: 01-03-2009
Messages: 318
Site web

Re: [Zend_Loader_Autoloader][1.10] Problème d'auto-inclusion

merci beaucoup, je préfaire éviter, il y a des parties de mon code pas très standardisées et propres.

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages