Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Je travail actuellement sur la refonte du site internet de mon entreprise et j'ai un problème, qui, je pense, vient du layout.
J'explique.
J'utilise le même layout sur toutes les pages. Or, sur certaines pages, une ligne blanche s'inclut tout en haut de la page décalant tout le site.
http://reseaudesassociations.fr/fr/services <- Ici tout va bien
http://reseaudesassociations.fr/fr/outils <- Ici tout est descendu d'une ligne
Pourtant, j'ai tout enlevé de la page il ne reste que les balises
<html>
<head>
$this->headLink()->appendStylesheet('../default/styles/main.css', 'screen', true);
echo $this->headLink();
</head>
<body>
<div>Blabla</div>
</body>
</html>
Ce que j'ai remarqué avec firebug, c'est que dans les pages où une ligne apparait, le lien du css se retrouve dans le body au lieu de rester dans le head. Alors que dans les autres pages, tout est bien à sa place.
Les contrôleurs sont identique, vide, avec bien la première lettre en maj.
Je ne sais vraiment pas ce qui se passe. Si quelqu'un pouvait éclairer ma lanterne.
Dernière modification par Nadawn (06-10-2010 13:57:24)
Hors ligne
Lorsqu'on regarde le code source, il n'y a pas de Head dans le body.
Mais un caractère espace avant la balise html.
Attention avec Firebug car ce n'est pas le code source que tu vois, mais le DOM déjà corrigé et modifié par Firefox.
Tu a du cache page ? Si oui ça vient peut-être de ton debug_header.
Hors ligne
Il n'y a pas de cache sur ces pages là.
Je ne vois pas d'espace avant la balise html quand je regarde la source de mon côté.
Si c'etait un problème de cache, ca le ferais sur toutes les pages, puisque c'est le même layout, non ?
Et je sais pour firebug, mais ca reste une aide précieuse pour déceler certains problème
Hors ligne
Il y a clairement un espace dans http://reseaudesassociations.fr/fr/outils (visible avec Google Chrome, Fiddler, ...)
Ouvre donc tous tes fichiers php à la recherche d'un espace avant la balise <?php ou après la balise ?> (qui d'ailleurs ne doit pas être utilisé si ça n'est pas nécessaire pour éviter ce genre de désagrément).
Tu peux tricher aussi : insère la fonction setcookie('tata', 'yoyo'); à la fin de ton fichier index.php.
Php va t'afficher une erreur du type : 'Output already started in monfichier.php at ligne 1'.
Tu n'auras plus qu'à te rendre dans le fichier en question et supprimer le caractère.
N'oublie pas d'enlever la fonction setcookie() après avoir corrigé le problème.
Hors ligne
Alors,
J'ai bien mis setcookie('tata', 'yoyo'); à la fin de mon fichier public_html/index.php
Aucune erreur à l'horizon malheureusement.
Mais effectivement, sous chrome on aperçois bien l'espace avant le <html>
Mon OutilsController :
<?
require_once 'Zend/Controller/Action.php';
class OutilsController extends RdControllerClass
{
public function init(){
parent::init();
$this->view->title = "Bug Blabla";
}
public function indexAction()
{
}
}
Dernière modification par Nadawn (05-10-2010 13:24:05)
Hors ligne
Oui effectivement tu ne dois pas avoir d'erreur car Zend utilise l'output buffering.
Essais peut-être avec ce code :
while(ob_get_flush()); restore_error_handler(); setcookie('tata', 'yoyo');
ça va peut-être t'aider, mais pas sure que tu vois la ligne exacte.
Pour ton OutilsController, vérifie que t'a pas d'espace devant le <?php.
De même pour TOUS les fichiers utilisés (ça peut venir d'un fichier Table, Form, ...).
Si tu es sous Zend Studio (Peut-être que ça marche avec Eclipse PDT aussi) :
- Appui sur CTR+H
- Va dans l'onglet File Search
- Active "Regular Expression"
- Et effectue une recherche sur (sans les quotes) : "^ <?php"
Fait de même pour avec l'expression : "\?>\s*<\?php"
Cela pourrait peut-être t'aider à identifier ton fichier qui affiche ce caractère blanc.
Hors ligne
J'ai l'erreur, mais qui ne donne pas le bon fichier.
"Warning: Cannot modify header information - headers already sent by (output started at /public_html/index.php:2) in /public_html/index.php on line 4"
Cette ligne correspond à setcookie('tata', 'yoyo');
Hors ligne
Fouille alors manuellement tous tes fichiers en les ouvrants ou en cherchant avec Zend Studio et les Regex que je t'ai indiqué.
Hors ligne
Je le fais actuellement, ca cherche dans les quelques 21 666 fichiers du projet
Merci en tout cas.
Hors ligne
J'ai oublié de préciser de filtrer les fichiers : *.php, *.phtml
Hors ligne
"^ <?php" <- 0 matches
"\?>\s*<\?php" <- 68 matches. Tous sur des anciens fichiers non utilisé.
L'erreur ne doit donc pas venir de là.
Ca ne pourrait pas venir d'une erreur d'un .js ? Bien que j'utilise aucun .js dans le code à cet endroit.
Edit : Si je fait la même recherche avec <? au lieu de <?php, vu que la plupart de mes balises d'ouverture php sont <? ca me donne :
"^ <?php" <- 286 521 matches, même à des endroit où il n'y a pas la balises <?
"\?>\s*<\?php" <- 213 matches, sur des fichiers qui ne pose pas problèmes ou qui ne servent pas dans le cas présent
Dernière modification par Nadawn (05-10-2010 15:33:06)
Hors ligne
J'ai réussi enlever le problème sur une des deux pages qui avaient le bug en supprimant simplement le Controller et en le remplaçant par un autre ( en remettant les bonnes infos ).
Mais ca n'a pas marché pour l'autre page.
"<\?" <= 0 matches
Hors ligne
Pages: 1