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 :

feuille de style non prise en compte dans un module [Fait]


Sujet :

Zend Framework PHP

  1. #1
    Membre régulier Avatar de Phenomenium
    Inscrit en
    Janvier 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2004
    Messages : 185
    Points : 90
    Points
    90
    Par défaut feuille de style non prise en compte dans un module
    Re-bonjour

    j'ai un petit souci de css que je n'arrive pas à résoudre.

    J'utilise un layout dans lequel j'ai placé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $this->headLink()->appendStylesheet($this->css) ?>
    Qui me génére en html :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <link href="./public/css/default.css" media="screen" rel="stylesheet" type="text/css" />
    le path "./public/css" est défini dans un fichier de conf.

    Tout fonctionne bien jusqu'au moment ou j'affiche un module. Le chemin est toujours le même et pourtant le css est introuvable. Je ne comprend pas car a priori il part bien de la racine grace au "./"

    est ce que je suis clair ?

    merci d'avance

  2. #2
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Bonjour,

    Avec le "./" il ne part pas de la racine mais du répertoire courant. Pour partir de la racine, il faut utiliser "/".

    / = racine
    . = répertoire courant
    .. = répertoire parent

  3. #3
    Membre régulier Avatar de Phenomenium
    Inscrit en
    Janvier 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2004
    Messages : 185
    Points : 90
    Points
    90
    Par défaut
    Oui me suis mal expliqué.

    Par contre en mettant juste le / il ne trouve plus la css meme sur default...

    EDIT : Il y a peut etre une variable a initialiser pour définir la racine ?

    RE-EDIT :

    / ne marche pour aucun
    ./ fonctionne pour la home
    ../ fonctionne pour les modules

    Il doit manquer un truc...

  4. #4
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Il faut toujours avoir des adresses absolues pour que les navigateurs ne se perdent pas.

    Pour cela, le plus simple est de créer une aide de vue qui récupères l'url de ton site :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class Zend_View_Helper_BaseUrl
    {
        function baseUrl()
        {
            $frontController = Zend_Controller_Front::getInstance();
            return $frontController->getBaseUrl();
        }
    }
    Ensuite, tu peux l'utiliser dans ta vue de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $this->headLink()->appendStylesheet($this->baseUrl().$this->css);
    echo $this->headLink();
    Edit : d'ailleurs, c'est ce qui est fait dans ce tutoriel : http://g-rossolini.developpez.com/tu...page=vue#LIV-C

  5. #5
    Membre régulier Avatar de Phenomenium
    Inscrit en
    Janvier 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2004
    Messages : 185
    Points : 90
    Points
    90
    Par défaut
    Ok je vais essayer avec ça. J'avais pas encore tester les aides de vues.

    Merci

  6. #6
    Membre régulier Avatar de Phenomenium
    Inscrit en
    Janvier 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2004
    Messages : 185
    Points : 90
    Points
    90
    Par défaut
    hmmm par contre je suis obligé de définir le chemin de mon helper a chaque fois que j'en ai besoin ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $view = new Zend_View();
    $view->setHelperPath('application/views/helpers', 'BaseUrl');
    ne puis je pas le faire une fois pour toute dans le bootstrap ?

  7. #7
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Euh... Non, normalement si tu as mis ton aide dans le répertoire par défaut ('application/views/helpers') elle est automatiquement incluse par Zend...

    Tu as un message d'erreur quand tu ne le fais pas ?

  8. #8
    Membre régulier Avatar de Phenomenium
    Inscrit en
    Janvier 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2004
    Messages : 185
    Points : 90
    Points
    90
    Par défaut
    Oui :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    helper 'BaseUrl' not found in path
    ---------------------------------------------

    application/views/helpers/BaseUrl.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class Zend_View_Helper_BaseUrl
    {
    	public function baseUrl()
    	{
    		$frontController = Zend_Controller_Front::getInstance();
    		return $frontController->getBaseUrl();
    	}
    }
    j'ai bien vérifier le CamelCase

  9. #9
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    En fait, c'est réalisé automatiquement par l'aide d'action ViewRenderer.

    Je suppose donc que tu l'as désactivée dans tes actions ?

  10. #10
    Membre régulier Avatar de Phenomenium
    Inscrit en
    Janvier 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2004
    Messages : 185
    Points : 90
    Points
    90
    Par défaut
    Je ne pense pas.

    je ne vois rien de tel dans le bootstrap et non plus dans les controllers.

    Pas de désactivation du VR.

  11. #11
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 54
    Points : 62
    Points
    62
    Par défaut
    Citation Envoyé par Phenomenium Voir le message
    j'ai bien vérifier le CamelCase
    Je sais que pour les vues sur les serveurs Linux, il faut mettre les noms des fichiers en minuscules uniquement (Alors que l'action associée est en CamelCase). Peut-être que c'est pareil pour les helpers?
    (application/views/helpers/baseurl.php)

  12. #12
    Membre régulier Avatar de Phenomenium
    Inscrit en
    Janvier 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2004
    Messages : 185
    Points : 90
    Points
    90
    Par défaut
    Citation Envoyé par trashyquaker Voir le message
    Je sais que pour les vues sur les serveurs Linux, il faut mettre les noms des fichiers en minuscules uniquement (Alors que l'action associée est en CamelCase). Peut-être que c'est pareil pour les helpers?
    (application/views/helpers/baseurl.php)
    Je ne pense pas car il est précisé qu'il faut bien mettre les majuscules ici : http://g-rossolini.developpez.com/tu...page=vue#LIV-C



    EDIT : On est pas obligé de faire un initView() dans le bootstrap ?

  13. #13
    Membre régulier Avatar de Phenomenium
    Inscrit en
    Janvier 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2004
    Messages : 185
    Points : 90
    Points
    90
    Par défaut
    Ah ! je viens de trouver un truc !

    Dans le layout global ca marche, ca bug juste quand j'entre dans un module

    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
    <?php echo $this->doctype('XHTML1_STRICT') ?>
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head>  
      <?php echo $this->headMeta()->appendHttpEquiv('Content-Type', 'text/html; charset=UTF-8')->appendHttpEquiv('Content-Language', 'fr-FR') ?> 
      <?php echo $this->headTitle($this->title) ?>
      <?php echo $this->headLink()->appendStylesheet($this->baseUrl() . $this->css) ?>
    </head>
    <body>
    	<?php echo $this->render('header.phtml'); ?>
    	<?php if($this->userIdentity()) : ?>
    		<?php echo $this->render('nav.phtml'); ?>
    	<?php endif; ?>
    	<div id="container">
      	<?php echo $this->layout()->content ?>
      </div>
     	<?php echo $this->render('footer.phtml'); ?>
    </body>  
    </html>
    Lorsque j'entre dans mon module il ne trouve plus l'aide de vue baseUrl et userIdentity, pourtant le layout est le meme...

    EDIT : Bon j'ai mis ca en haut du layout et ca fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php $this->addHelperPath('application/views/helpers') ?>
    Merci a tous

  14. #14
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Voilà ce que je fais dans le bootstrap pour déclarer le chemin par défaut de mes helpers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // view helpers
    $view = new Zend_View();
    $view->setHelperPath('../application/modules/default/views/helpers', 'My_View_Helper');
     
    $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer();
    $viewRenderer->setView($view);
    Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);

  15. #15
    Membre régulier Avatar de Phenomenium
    Inscrit en
    Janvier 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2004
    Messages : 185
    Points : 90
    Points
    90
    Par défaut
    Je viens de tester ta solution effectivement ça fonctionne
    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [CSS] Feuille de style non prise en compte
    Par mhached dans le forum JSF
    Réponses: 8
    Dernier message: 01/01/2015, 20h41
  2. Feuille de style non prise en compte sous IE6
    Par Bluespike62 dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 10/01/2008, 12h57
  3. Réponses: 1
    Dernier message: 08/08/2007, 11h26
  4. [Debutant][HTML][CSS]Feuille de style non prise en compte
    Par sandrinec dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 19/04/2006, 16h23
  5. [css] Feuille de style non prise en compte
    Par Neuromancien2 dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 29/06/2005, 11h49

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