IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend Framework PHP Discussion :

Changer le dossier par défaut des Helpers


Sujet :

Zend Framework PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Décembre 2009
    Messages : 95
    Points : 97
    Points
    97
    Par défaut Changer le dossier par défaut des Helpers
    Bonjour tout le monde,

    Je ne connais pas encore grand choe en ce qui concerne ce framework. Je viens de démarrer un nouveau projet et j'aimerais personnaliser le chemin d'accès au dossier des helpers.
    Pour cela , j'ai essayé un grand nombre de solutions que je ne pourrais toutes citer alors nous allons partir sur ce que j'ai actuellement.

    Mon objectif : Faire en sorte que Zend aile chercher mes helper dans le dossier : ./application/common/helpers/

    Mon code actuel :

    Index.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    set_include_path('.'
    . PATH_SEPARATOR . './library'
    . PATH_SEPARATOR . './library/AimezVous'
    . PATH_SEPARATOR . './application/common/models'
    . PATH_SEPARATOR . './application/common/forms'
    . PATH_SEPARATOR . './application/common/helpers'
    . PATH_SEPARATOR . get_include_path());
    Bootstrap.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $view = new Zend_View();
    $view->doctype('XHTML1_STRICT');
    $view->addHelperPath('../library/AimezVous/Helper');
    ./application/commom/Helpers/GetUrl.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Class Zend_View_Helper_GetUrl extends Zend_View_Helper_Abstract
    {
    	public function GetUrl($url=null, $module=null, $media = false) {
    	...
    	}
    }
    Pour conclure, je me retrouve face au message d'erreur suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Plugin by name 'GetUrl' was not found in the registry; used paths:
    Zend_View_Helper_: Zend/View/Helper/:./application/default/views/helpers/
     
    #0 /home/aimez/www/library/Zend/View/Abstract.php(1174): Zend_Loader_PluginLoader->load('GetUrl')
    #1 /home/aimez/www/library/Zend/View/Abstract.php(610): Zend_View_Abstract->_getPlugin('helper', 'getUrl')
    #2 /home/aimez/www/library/Zend/View/Abstract.php(336): Zend_View_Abstract->getHelper('getUrl')
    #3 [internal function]: Zend_View_Abstract->__call('getUrl', Array)
    #4 /home/aimez/www/application/common/layouts/layout.phtml(10): Zend_View->getUrl('', 'default')
    #5 /home/aimez/www/library/Zend/View.php(108): include('/home/aimez/www...')
    Comme le montre la première ligne, il va chercher dans le répertoire par défaut (./application/default/views/helpers/) ... Mais ce n'est pas ce que je voudrais.

    Comment faire ?

    Merci d'avance.

  2. #2
    Membre éclairé Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Points : 663
    Points
    663
    Par défaut
    Salut

    Déjà, sache que tu as les aides de vue et les aides d'actions, donc si tu configure un dossier contenant des helpers, il serait plus pratique de préciser de quoi il s'agit dans le nom du dossier...
    Par habitude, on ajoute les librairies perso dans le meme répertoire que library en voici un exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $view->addHelperPath('My/View/Helpers','My_View_Helper');
    Le premier argument te donne le chemin, le deuxieme te donne le début de nom de classe que tu devra donner à tes helpers persos.
    Pour GetUrl tu créeras donc le helper My_View_Helper_GetUrl

    Essaie déjà ça et adapte ensuite en fonction de tes besoin

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Décembre 2009
    Messages : 95
    Points : 97
    Points
    97
    Par défaut
    En me basant sur tes conseils je viens d'essayer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $view->addHelperPath('AimezVous/Helpers/', 'AimezVous_Helper');
    j'ai déplacé ma classe dans le dossier :
    library/AimezVous/Helper
    et j'ai changé le nom de la classe comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Class AimezVous_Helper_GetUrl extends Zend_View_Helper_Abstract {
    Mais le message d'erreur reste le même.
    Qu'ai-je fais de travers ?

  4. #4
    Membre éclairé Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Points : 663
    Points
    663
    Par défaut
    Je te file une copie de mon index.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    <?php
    // Define this public path
    defined('PUBLIC_PATH')
        || define('PUBLIC_PATH',
            realpath(dirname(__FILE__)));
     
    // Define path to application directory
    defined('APPLICATION_PATH')
        || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
     
    // Define application environment
    defined('APPLICATION_ENV')
        || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));
     
    // Ensure library/ is on include_path
    set_include_path(implode(PATH_SEPARATOR, array(
        realpath(APPLICATION_PATH . '/../library'),
        get_include_path(),
    )));
     
    /** Zend_Application */
    require_once 'Zend/Application.php';  
     
    // Create application, bootstrap, and run
    $application = new Zend_Application(
        APPLICATION_ENV, 
        APPLICATION_PATH . '/configs/application.ini'
    );
     
    $application->bootstrap()
                ->run();
    Normalement cette configuration de path suffit pour commencer.
    tu devrais avoir cette arbo:
    /application
    /library/
    /library/Zend
    /library/AimezVous/Helpers/
    /public/

    De plus tu as mis un slash après Helpers 'AimezVous/Helpers/' essaie en l'enlevant

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Décembre 2009
    Messages : 95
    Points : 97
    Points
    97
    Par défaut
    J'ai essayé d'enlever le / à la fin, aucun changement. Le message d'erreur reste le même.

    En ce qui concerne ton fichier index.php ... A aucun moment tu ne spécifie le chemin d'accès aux helpers donc je ne pense pas que celui-ci pourra m'aider.

    Merci tout de même pour ta réponse.

  6. #6
    Membre éclairé Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Points : 663
    Points
    663
    Par défaut
    En ce qui concerne ton fichier index.php ... A aucun moment tu ne spécifie le chemin d'accès aux helpers donc je ne pense pas que celui-ci pourra m'aider.
    Ben c'est normal car ça configure correctement les paths de ton application en regard avec ton premier post. Lit la doc de Zend sur l'autoload et tu comprendra mieux le principe.
    De plus, le chemin vers les helpers de vue se configure évidement dans le bootstrap mais je pensais que tu aurais tilté...

    J'ai essayé chez moi en local et ça fonctionne:

    J'ai créé le chemin library/AimezVous/Helpers/GetUrl.php j'ai juste eu à ajouter dans mon bootstrap la ligne que je t'ai donné plus haut:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
    {
        protected function _initView()
        {
            $view = new Zend_View();
            $view->addHelperPath('AimezVous/Helpers/', 'AimezVous_Helper');
     
            // Ajout de la vue au ViewRenderer
            $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
            $viewRenderer->setView($view);
     
            return $view;
        }
    }
    J'ai ensuite créé le helepr:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class AimezVous_Helper_GetUrl extends Zend_View_Helper_Abstract
    {
        public function GetUrl()
        {
            return 'yahooooo';
        }
    }
    Et dans ma vue:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <?php echo $this->GetUrl() ?>

  7. #7
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 151
    Points : 133
    Points
    133
    Par défaut
    Bonjour,

    Et si tu utilisais la vue existante au lieu dans créer une :
    à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $view = new Zend_View();
    A+

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/02/2015, 23h17
  2. [AC-2013] Dossier par défaut des liens hypertexte
    Par rag83 dans le forum IHM
    Réponses: 24
    Dernier message: 18/09/2014, 20h32
  3. [OL-2003] Dossier par défaut des liens hypertext
    Par Adri687 dans le forum Outlook
    Réponses: 0
    Dernier message: 17/02/2011, 11h59
  4. Changer la valeur par défaut des namespaces
    Par Orphey dans le forum Visual Studio
    Réponses: 8
    Dernier message: 02/12/2010, 12h28
  5. Réponses: 14
    Dernier message: 07/06/2006, 09h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo