2009-10-15 6 views
2

J'utilise Zend 1.8.4 et je configure un test de formulaire simple. Ma forme classe est situé dans « ./application/forms/SectorSearch.php » et le nom de classe estModule Zend Forms Inclut des chemins

<?php 
class Form_SectorSearch extends Zend_Form 
{...} 

Mon contrôleur crée une nouvelle forme dans la méthode init()

<?php 
class SectorController extends Zend_Controller_Action 
{ 
    function init() 
    { 
     $this->initView(); 
     $form = new Form_SectorSearch(array(
      'method' => '/public/sector/search', 
      'action' => 'post')); 
     $this->view->form = $form; 
    } 
.. 
} 

Mais je Je reçois cette erreur

Warning: Zend_Loader_Autoloader_Resource::include(/home/poconnell/projects/bhaa/application/forms/SectorSearch.php) [zend-loader-autoloader-resource.include]: failed to open stream: No such file or directory in /home/poconnell/projects/bhaa/library/Zend/Loader/Autoloader/Resource.php on line 178 

Warning: Zend_Loader_Autoloader_Resource::include() [function.include]: Failed opening '/home/poconnell/projects/bhaa/application/forms/SectorSearch.php' for inclusion (include_path='/home/poconnell/projects/bhaa/library:/home/poconnell/projects/bhaa/application:.:/usr/share/php:/usr/share/pear') in /home/poconnell/projects/bhaa/library/Zend/Loader/Autoloader/Resource.php on line 178 

Fatal error: Class 'Form_SectorSearch' not found in /home/poconnell/projects/bhaa/application/controllers/SectorController.php on line 19 

Je suis sûr à 100% que la classe est sur le chemin d'inclusion.

Je pense que cela est un problème de bootstraping, et voilà comment je suis le chargement du module par défaut

protected function _initAutoload() 
{ 
    //Zend_Loader_Autoloader_Resource - Zend_Application_Module_Autoloader 
    $moduleLoader = new Zend_Application_Module_Autoloader(array(
     'namespace' => '', 
     'basePath' => APPLICATION_PATH 
    )); 
    return $moduleLoader; 
} 

J'ai même essayé d'utiliser ce modèle, tel que recommandé par Autloading modular forms & models in Zend Framework 1.8

protected function _initAutoload() 
{ 
    //Zend_Loader_Autoloader_Resource - Zend_Application_Module_Autoloader 
    $moduleLoader = new Zend_Application_Module_Autoloader(array(
     'namespace' => '', 
     'basePath' => APPLICATION_PATH, 
     'resourceTypes' => array (
      'form' => array(
      'path' => 'forms', 
      'namespace' => 'Form')) 
    ); 
    return $moduleLoader; 
} 

mais pas joie. des idées?

+0

Veillez à ce que les noms de fichiers soient dans UperCase au fur et à mesure que vous les incluez. C'est un problème courant lors du passage de win à linux. – powtac

+0

Êtes-vous sûr à 100% que le fichier a les permissions correctes? – PatrikAkerstrand

+0

poconnell @ foundry: ~/projets/bhaa/application/formulaires $ ls -al SectorSearch.php -rw-r - r-- 1 poconnell poconnell 561 2009-10-15 14:41 SectorSearch.php – emeraldjava

Répondre

1

Assurez-vous que le boîtier correspond exactement. Le dossier doit être nommé Forms sauf si vous avez un répertoire différent pour les classes Form et assurez-vous SectorSearch n'est pas sEcTorSEarcH.php ou quelque chose

0

Zend Framework interprète dans les noms de classe underscores sous forme de dossiers. Si vous ajoutez manuellement le dossier application/forms au chemin d'inclusion, vous devez nommer votre classe FormSectorSearch (et le nom de fichier FormSectorSearch.php) au lieu de Form_SectorSearch. Sinon, vous n'ajouteriez que le dossier d'application au chemin d'accès d'inclusion, puis nommeriez le dossier Form à la place des formulaires.

2

j'ajouté ce qui suit à mon dossier Bootstrap.php

protected function _initAutoload() 
    { 
     $autoloader = new Zend_Loader_Autoloader_Resource(array(
      'namespace' => '', 
      'basePath' => APPLICATION_PATH, 
      'resourceTypes' => array(
       'form' => array(
        'path' => 'forms', 
        'namespace' => 'Form', 
       ), 
       'model' => array(
        'path' => 'models', 
        'namespace' => 'Model', 
       ), 
      ) 
     )); 
     return $autoloader; 
    } 

et maintenant il fonctionne, aucune erreur plus .. putain je suis content que ça fonctionne, je suis presque fou .. :) vais

+0

Savez-vous s'il existe une entrée de configuration que vous pouvez ajouter pour que cela soit trouvé? – jackyalcine

Questions connexes