lordv Posté(e) le 20 mars 2011 Partager Posté(e) le 20 mars 2011 Salut , J’ai un petit problème avec une fonction qui sauvegarde le résultat de l'inclusion d'un fichier dans une variable. Cela ne marche tout simplement pas enfin la temporisation se fait seulement il me l’affiche en même temps qu’il stock dans le buffer. Un exemple tout simple ce code m’affiche deux fois « salut » ob_start(); echo "salut"; //ce echo est envoye au navigateur $out = ob_get_flush(); exit($out); //plus celui du buffer si quelqu'un peut m’aider SVP merci d’avance PS j'ai essaye sous windows :PHP/5.3.2 ZendServer et sous ubuntu : Server:nginx/0.7.67 Transfer-Encoding:chunked X-Powered-By:PHP/5.3.5 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Amour Posté(e) le 20 mars 2011 Partager Posté(e) le 20 mars 2011 Vous êtes sûr de votre code ? Car dans le manuel, il ne parle pas de mettre un exit() à la fin, mais un ob_end_flush... PS : je ne fais que supposer, car je ne connais pas du tout cette fonction Lien vers le commentaire Partager sur d’autres sites More sharing options...
lordv Posté(e) le 20 mars 2011 Auteur Partager Posté(e) le 20 mars 2011 ob_get_flush() est similaire à ob_end_flush(), sauf que cette fonction retourne le tampon en tant que chaîne je peux remplacer le exit par un echo j'aurai le même résultat . Lien vers le commentaire Partager sur d’autres sites More sharing options...
Amour Posté(e) le 20 mars 2011 Partager Posté(e) le 20 mars 2011 Sur un serveur de tests, ça me faisait pareil, alors j'ai vu que quelqu'un dans les commentaires du manuel a posté un exemple, et je m'en suis inspiré : <?php ob_start(); echo "salut"; //ce echo est envoye au navigateur $out = ob_get_flush(); ob_clean(); echo $out; //plus celui du buffer ?> Grâce à ob_clean() avant d'utiliser la variable, cela semble fonctionner et c'est affiché une seule fois. Pareil chez vous ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
lordv Posté(e) le 20 mars 2011 Auteur Partager Posté(e) le 20 mars 2011 Oui j'ai le même résultat que vous . le problème reste maintenant l'inclusion de fichier <?php ob_start(); include_once("fichierdevue.php"); //traitement de la vue $out = ob_get_flush(); ob_clean(); //puis utilisation de $out dans un layout ?> J’avais essayé avec un echo juste pour le debug. comme la solution propose dans ce topic il y'a aussi l'exemple du site officiel exemple #6 qui ne marche pas pour moi malgre l'absence de echo Lien vers le commentaire Partager sur d’autres sites More sharing options...
lordv Posté(e) le 20 mars 2011 Auteur Partager Posté(e) le 20 mars 2011 J'ai résolu mon problème .en fait l’utilisation de ob_end_flush envoi le buffer au navigateur .donc j’ai utilisé ob_end_clean pareil pour ob_get_flush qui retourne une chaine mais aussi envoi au navigateur. la doc php n'est pas tres clair a ce sujet surtout ici Il n'est dit nulle part que la sortie est envoyée au navigateur aussi. Voila mon code qui marche pas de flush ob_start(); $Ctr_name = explode("ctr_",$this->_controller_name); $Ctr_name = $Ctr_name[1]; include $Ctr_name.'/V_'.$this->view.'.php'; $content_for_layout = ob_get_contents(); ob_end_clean(); ob_start(); include 'l_'.$this->layout.'.php'; $content = ob_get_contents(); ob_end_clean(); return $content; Merci Amour Lien vers le commentaire Partager sur d’autres sites More sharing options...
Amour Posté(e) le 20 mars 2011 Partager Posté(e) le 20 mars 2011 Ce fichierdevue.php contient quel genre de script ? Que souhaitez-vous comme résultat final ? Edit : répondu trop tard, mais tant mieux finalement Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.