Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Hello,
Avant d'ouvrir un ticket de bug sur Zend, je voudrais savoir si certains ont eu ce problème. J'ai pas la dernière version, mais j'ai pas vu de ticket à ce sujet entre temps.
Si on regarde le code de "Zend_Application_Module_Autoloader" on voit ceci :
$this->addResourceTypes(array( 'dbtable' => array( 'namespace' => 'Model_DbTable', 'path' => 'models/DbTable', ), 'form' => array( 'namespace' => 'Form', 'path' => 'forms', ), 'model' => array( 'namespace' => 'Model', 'path' => 'models', ), 'plugin' => array( 'namespace' => 'Plugin', 'path' => 'plugins', ), 'service' => array( 'namespace' => 'Service', 'path' => 'services', ), 'viewhelper' => array( 'namespace' => 'View_Helper', 'path' => 'views/helpers', ), 'viewfilter' => array( 'namespace' => 'View_Filter', 'path' => 'views/filters', ), ));
Ce qui fonctionne très bien et prend bien en charge les modules. Par ex. j'ai deux modules, "front" et "admin" et je redéfinis totalement l'arbo.
app/ core/ domain/ web/ admin/ forms/ SuperForm.php front/ forms/ SuperForm.php
En indiquant simplement mon "module_path" dans la conf, je peux avoir grâce aux préfixes : "Form_SuperForm" et "Admin_Form_SuperForm", les deux fonctionnent, alors que la ressource "forms" n'est définie qu'une seule fois dans la classe d'autoload.
Jusque là tout va bien.
Maintenant, il est possible de définir de nouveaux types de ressources lors du bootstrap.
Exemple :
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { protected function _initAutoload() { $autoloader = new Zend_Application_Module_Autoloader(array( 'namespace' => '', 'basePath' => dirname(__FILE__), )); $autoloader->addResourceTypes(array( 'actionhelper' => array( 'namespace' => 'Helper', 'path' => 'helpers', ) )); // OU // $autoloader->addResourceTypes('actionhelper', 'helpers', 'Helper'); return $autoloader; } }
Donc là, c'est censé se comporter de la même façon on est d'accord ? Je dois pouvoir avoir "Helper_Toto" et "Admin_Helper_Toto" et dans l'arbo :
app/ web/ admin/ helpers/ Toto.php front/ helpers/ Toto.php
Et bien raté ça ne fonctionne pas.
Par contre, si je fais la même chose en dur dans la class ZF directement en ajoutant ma ressource au tableau d'origine, ça fonctionne :p
Alors bug ? C'est très très gênant en tout cas, ça bloque toute ma super arbo. génialissime modulable de la mort.
A+ benjamin.
Dernière modification par Delprog (22-04-2010 17:31:06)
Hors ligne
J'ai déjà déposé le même bug similaire je crois.
En utilisant juste
$autoloader = new Zend_Application_Module_Autoloader(array( 'namespace' => '', 'basePath' => dirname(__FILE__), ));
(sans rajouté de resource)
Mes nom de classe d'helpers (et uniquement le nom de classe, pas de répertoire ou fichier) de vue doivent être préfixé par 'Zend_', alors quels se situes bien dans MON library/App/views/helpers/
Ca vient du chargeur du chargeur de helper et du Appnamespace qui est vide.
Je n'ai pas ce problème avec les autres resources (forms, action/helpers, models, ...)
Hors ligne
Pages: 1