Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 14-04-2010 10:45:10

nicko
Membre
Lieu: Chambéry
Date d'inscription: 25-05-2009
Messages: 190

Erreur de majuscule dans Zend

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 :

Code:

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 :

Code:

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

 

#2 14-04-2010 10:54:10

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: Erreur de majuscule dans Zend

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 smile )

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#3 14-04-2010 10:58:36

nicko
Membre
Lieu: Chambéry
Date d'inscription: 25-05-2009
Messages: 190

Re: Erreur de majuscule dans Zend

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 wink

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

 

#4 14-04-2010 14:06:10

armetiz
Membre
Lieu: Lyon
Date d'inscription: 26-02-2010
Messages: 53
Site web

Re: Erreur de majuscule dans Zend

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

 

#5 14-04-2010 15:04:29

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Erreur de majuscule dans Zend

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

 

#6 14-04-2010 16:09:35

nicko
Membre
Lieu: Chambéry
Date d'inscription: 25-05-2009
Messages: 190

Re: Erreur de majuscule dans Zend

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

 

#7 19-04-2010 18:12:24

nicko
Membre
Lieu: Chambéry
Date d'inscription: 25-05-2009
Messages: 190

Re: Erreur de majuscule dans Zend

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é :

Code:

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

 

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