Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Je voudrais vous faire par d'un retour d'expérience que j'ai eue en mettant un projet avec Zend en ligne.
Tout le "nommage" des dossier et fichier Zend ont leur première lettre en majuscule (je parle de la librairie). J'ai donc sous Windows avec un serveur Wamp, j'ai continué en respectant la même convention de "nommage" des dossier et des fichiers sur ceux que j'ai créés.
Mais viens le moment où je mets les fichiers en ligne (sous linux) pour un teste et là grande surprise !!!
Zend n'a pas eu l'air de répertorier leur convention de "nommage" sur les fichiers du développeur.
Si je prends l'exemple des vues que j'ai nommé ainsi :
Views/Scripts/Index/Index.php
J'aurais une erreur qui dit que le fichier n'est pas lisible (ou introuvable en d'autres termes).
Il faut au moins que ce soit écrit de la façon suivante :
views/scripts/index/index.php
Donc sans les majuscules.
Alors ma question est la suivante. Je ne me rappelle pas qu'avec PHP.INI, il soit possible de faire en sorte que la recherche dossier soit insensible à la casse.
Donc si vous savez comment configurer PHP.INI via Zend Bien-sur, je suis preneur.
Merci de vos explications.
Bien cordialement
Hors ligne
Je ne crois pas qu'il y ait de paramètre dans php.ini
C'est vraiment lié au système le fait d'être case sensitive ou pas.
Par contre pour les conventions de nommage, ce sont les classes dont la première lettre est en majuscule (autant pour les fichiers que pour le nom de la classe). Pas les autres fichiers (bon effectivement, dans le ZF, il n'y a quasiment que des classes )
A+, Philippe
Hors ligne
Oui c'est vrai que le nom des dossiers et fichiers sont très étroitement liés avec le nom de la classe. Mais tout de même, c'est dommage qu'ils n'aient pas calqués cette méthode sur tous les fichiers, au moins dans la configuration par défaut.
Surtout quand le projet est bien entamé LOL
Je pense que je vais devoir jouer sur Zend_Views et autres
Dernière modification par nicko (14-04-2010 11:00:12)
Hors ligne
Le "Case sensitive" dépend du système où tu es...
Concernant le comportement de Zend, je ne comprends pas leurs choix sur les minuscules pour les dossiers "standard" de Zend.
Tu peut regarder Zend_Application_Module_Autoloader:initDefaultResourceTypes ()
Si tu ne veux pas modifier tout ton projet pour passer majuscule -> minuscule, tu peut soit étendre cette class, ou plus simplement ajouter des ressources correspondant à tes besoins.
Hors ligne
AMHA
ce qui est gênant surtout c'est que ce n'est pas homogène
les classes
Fast_Db_Table dans le dossier
Fast/Db/Table.php
les controllers
AppController
Aplications/Controllers/AppController.php
les actions
get-first-value
getFirstValueAction
les vues
get-first-value
Application/views/scripts/app/get-first-value.phtml
les controller de module
Adm_GroupController
Adm/Controllers/GroupController.php
les classes de module
Adm_Model_Profile
Adm/Model/Profile.php
les vues de modules
get-first-value
Adm/views/scripts/group/get-first-value.phtml
les contrôleurs en respectant le nommage des classes pour rester homogène devraient s'appeler
Aplication_Controller_App
Aplication/Controller/App.php
ou pour les modules
Adm_Controller_Group
Adm/Controller/Group.php
de même les actions
get_first_value
get_First_Value_Action
et la vue
Application/View/App/get_First_Value.phtml
avec un View et non un view (comme pour tout le reste du framework)
et un App comme dans les contrôleurs et non app
c'est une des premières critique qu'a subit ZF et le nommage des action et des vue à changé en cours de route
il serait peut-être bon de faire ça clean dans la version 2.0
A+JYT
Hors ligne
J'ai réussi pour une partie de mettre des majuscules pour les vues, mais c'est surtout le Layout.phtml (ou php) qui pause le souci.
Mais j'ai du bidouiller et j'aime pas ça.
L'idée d'étendre Zend_Application_Module_Autoloader est pas mal, mais le ne sais si ca va marcher pour les scripts de vue.
Hors ligne
Bonjour,
Voila un plugin qui résout une partie du problème, a voir s'il n'y a pas de problème de sécurité :
class Core_Controller_Plugin_View extends Core_Controller_Plugin { private $_mvc = null; private $_view = null; private $_viewRenderer = null; private $_layout = null; public function routeStartup(Zend_Controller_Request_Abstract $request) { $this->_mvc = Zend_Layout::startMvc(); $this->_mvc->setViewSuffix($this->getSystemOptions('views_default_suffix')); $flashMessenger = new Zend_Controller_Action_Helper_FlashMessenger(); $this->_view = new Zend_View(); $this->_view->addHelperPath(SOURCE_PATH . S . 'Core' . S . 'View' . S . 'Helper'); $this->_layout = Zend_Layout::getMvcInstance()->getView(); $this->_layout->layout()->flasMessager = $flashMessenger; $this->_layout->addHelperPath(SOURCE_PATH . S . 'Core' . S . 'View' . S . 'Helper'); $this->_view->setEscape($this->getSystemOptions('views_escape')); $this->_view->doctype($this->getSystemOptions('views_doctype')); $this->_view->setEncoding($this->getSystemOptions('views_encoding')); $this->_view->headMeta()->appendHttpEquiv('Content-Type', $this->getSystemOptions('views_content_type')); $this->_viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer(); $this->_viewRenderer->setViewSuffix($this->getSystemOptions('views_default_suffix')); } public function routeShutdown(Zend_Controller_Request_Abstract $request) { $module = $request->getModuleName(); $controller = $request->getControllerName(); $action = $request->getActionName(); // Récupération du Layout suivante le module en cours $layout = LOCAL_PATH . S . 'Templates' . S . ucfirst($module) . S . 'Layout' . '.' . $this->_systemOptions->getOption('views_default_suffix'); $this->_viewRenderer->setViewScriptPathSpec(ucfirst($controller) . S . ucfirst($action) . '.php'); $this->_view->setScriptPath(SOURCE_APPLICATION . S . ucfirst($module) . S . 'Views' . S . 'Scripts'); // Recherche du layout à afficher par défaut switch(file_exists($layout)) { case true: $this->_mvc->setLayoutPath(LOCAL_PATH . S . 'Templates' . S . ucfirst($module)); break; case false: default: $this->_mvc->setLayoutPath(SOURCE_PATH . S . 'Templates' . S . ucfirst($module)); break; } // <-- Recherche du layout à afficher par défaut $this->_viewRenderer->setView($this->_view); Zend_Controller_Action_HelperBroker::addHelper($this->_viewRenderer); }
Remplacez les $this->getSystemOptions('XXXX') par vos paramètres par défaut. Pour cet exemple, j'ai un système avec Zend_Layout que je n'ai pas réussi a mettre en majuscule et je crois que c'est tout bonnement impossible ! (j'ai tout essayé).
Il reste plus qu'a l'adapter ...
Si vous avez des remarques, je suis preneur.
Bien cordialement.
Dernière modification par nicko (19-04-2010 18:13:17)
Hors ligne