[résolu] Changement de "header PHP" dans une action - Version imprimable +- Forum CMS Made Simple FR (https://forum.cmsmadesimple.fr) +-- Forum : Général (https://forum.cmsmadesimple.fr/forum-3.html) +--- Forum : Général (https://forum.cmsmadesimple.fr/forum-10.html) +--- Sujet : [résolu] Changement de "header PHP" dans une action (/thread-15.html) |
[résolu] Changement de "header PHP" dans une action - eureka - 15/06/2011 Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~ Bonjour, Je suis confronté à un petit soucis. J'ai porté un composant (zfdatagrid) dans CMSMS. Celui-ci permet de lister des occurrences de la base de données et propose également des liens d'export (CSV, PDF, ...). Afin d'afficher le listing dans une page, j'utilise un tag du type {MonModule action='afficherDatagrid'}, cela fonctionne parfaitement, et lorsque je clique sur un lien d'export (par exemple CSV), la page se recharge donc et le composant détecte dans l'URL que les données doivent être proposé au téléchargement. Il opère donc les instructions suivantes : Code : header('Content-Description: File Transfer'); Le souci ici est que je récupère bien toutes les données au format CSV mais qu'elles sont précédées du template de la page, c'est à dire de tout le début du gabarit de la page jusqu'à ce que les méthodes header() soient appelées. Mon fichier CSV comprend donc Code : - le header de la page Il y a-t-il donc un moyen de désactiver le chargement du gabarit pour que mes fichiers ne contiennent que les données à exporter ? (j'ai l'impression que CMSMS fait des "echo" de chaque élement du gabarit jusqu'à ce que mes méthodes header() soit appelées, j'aimerais éviter ce comportement justement) [résolu] Changement de "header PHP" dans une action - bess - 15/06/2011 négatif, il ne fait pas d'echo. et remplacer le rechargement de la page courante par un lien vers une page au gabarit minimaliste (notamment sans toute la partie html non souhaitée) qui fasse directement l'export en csv ? [résolu] Changement de "header PHP" dans une action - eureka - 15/06/2011 Merci pour ce retour bess. S'il ne fait pas d'echo, peux-tu expliciter (même en 1 ligne) comment fonctionne-t-il stp? (le fait que le changement d'header embarque du contenu existant me laisse penser que la réponse HTTP est déjà partiellement remplie). Je voulais éviter justement un changement de page, afin qu'une fois le fichier proposé au téléchargement la personne soit toujours sur la page où est affiché le datagrid. Du coup l'idée serait - de créer un gabarit vide et d'y appeler la même action qu'actuellement - tester l'alias de la page courante pour savoir si une redirection doit être opérée après téléchargement du fichier pour revenir à la précédente si on est dans le cas d'un export. Je vais voir cela. Merci. [résolu] Changement de "header PHP" dans une action - bess - 15/06/2011 Citation :Je voulais éviter justement un changement de page, afin qu'une fois le fichier proposé au téléchargement la personne soit toujours sur la page où est affiché le datagrid. smarty -> template -> cache de template -> tour de magie -> hop ca fait des chocapic. bon tu l'auras compris, ma connaissance de la machine s'arrête au cache mais non, dans le code source on est pas sensé faire des echo à tous va, ne serait ce pour des question de performances. Citation :Je voulais éviter justement un changement de page, afin qu'une fois le fichier proposé au téléchargement la personne soit toujours sur la page où est affiché le datagrid. target='_blank' ? [résolu] Changement de "header PHP" dans une action - eureka - 15/06/2011 En fait le problème avec cette solution est que la majorité des cas où j'ai besoin de cela se situe dans l'admin, et je ne vois pas comment choisir le gabarit d'une page particulière.. [résolu] Changement de "header PHP" dans une action - bess - 15/06/2011 ha ouais effectivement... de puis je ne suis pas certain de ma réponse pour les echo non plus.. tu fais ton propre module ? [résolu] Changement de "header PHP" dans une action - eureka - 15/06/2011 Oui je suis dans des modules créés de A à Z. J'ai donc la main sur les "actions.*.php". Jusque là tout se passait bien mais là je bloque un peu. Je ne sais pas s'il faut que je crée un "hack" pour retenir la sortie jusqu'à la fin des traitements de CMSMS et ainsi pouvoir changer de header() en cours de route sans avoir les gabarits déjà envoyés, ou bien s'il existe une solution existantes (ce qui évite de modifier le coeur de l'application juste pour cela). Je vais continuer de chercher.. [résolu] Changement de "header PHP" dans une action - airelibre - 15/06/2011 Hello, J'ai été confronté à ce genre de problème lors de la création d'un module avec téléchargement de PDFs. Voici une piste - si tu utilises la méthode "CreateFrontEndLink", il faut passer dans tes paramètres les valeurs : Code : 'showtemplate'=>'false', 'disable_theme'=>'true' Ce qui donne par exemple : Code : $MonLienTelechargement = $this->CreateFrontEndLink($id, $returnid, 'telechargement', '', array('showtemplate'=>'false', 'disable_theme'=>'true')); Et voici la signature de la fonction CreateFrontEndLink de la classe CMSModule : Code : function CreateFrontendLink( $id, $returnid, $action, $contents='', $params=array(), $warn_message='', J'espère que tu pourras régler ton problème [résolu] Changement de "header PHP" dans une action - eureka - 16/06/2011 Merci airelibre Fallait le trouver celui-là pardi, bien joué ! On va finir par trouver une solution. Malheureusement côté BackEnd ça ne fonctionne et c'est surtout là que j'en ai besoin. Je continue [résolu] Changement de "header PHP" dans une action - eureka - 17/06/2011 Petite question, si certaines personnes ont déjà travaillés sur des modules en AJAX en récupérant des données coté serveur, j'imagine que le template du BackEnd n'était pas embarqué. Peut-être quelqu'un aurait une idée dans ce contexte ? [résolu] Changement de "header PHP" dans une action - eureka - 22/06/2011 Bonjour, Une solution est de vider le tampon avant de générer les nouvelles données, via : Code : ob_end_clean(); Par exemple Code : ob_end_clean(); [résolu] Changement de "header PHP" dans une action - bess - 22/06/2011 merci pour ton retour eureka |