Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 10-09-2007 09:46:38

jzender
Membre
Date d'inscription: 12-07-2007
Messages: 25

Téléchargement d'un fichier généré

Bonjour à tous !

Je bute sur une nouvelle difficulté, qui cette fois-ci n'est pas forcément liée au Framework, mais comme je l'utilise avec le modèle M.V.C., je me permets de poster sur ce forum et à nouveau de vous demander votre aide.

J'essaie de lire le contenu d'un dossier et d'afficher des liens vers ces fichiers sur une page. J'ai donc deux fonctions dans mon contrôleur. La première lit dans le répertoire, cela fonctionne, j'obtiens bien la liste des fichiers dans le PHTML associé.

Par contre, sur le texte affiché, je mets un lien vers une autre page, qui fait appel à une autre fonction de mon contrôleur, dont voici le code :

Code:

header ("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
$f_location = $_SERVER["DOCUMENT_ROOT"] . '/mtm/trunk/application/expfiles/export.csv';
$f_name = 'export.csv';
header('Content-Length: ' . filesize($f_location));
header('Content-Disposition: attachment; filename=' . basename($f_name));
readfile($f_location);

Lorsque je clique sur ce lien, le navigateur me propose bien de télécharger un fichier export.csv, qui lui par contre contient ... une de mes pages PHTML ! Le fichier correct existe pourtant bien dans le répertoire, et j'utilise le même chemin dans la fonction qui liste les fichiers ...

Quelqu'un peut-il m'aider s'il vous plaît ?

Merci,
J-Zender.

Hors ligne

 

#2 10-09-2007 09:52:24

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Téléchargement d'un fichier généré

il ne faut pas que ta vue fasse kkchose

donc il te faut utiliser noViewRenderer
A+JYT

Hors ligne

 

#3 10-09-2007 09:55:17

jzender
Membre
Date d'inscription: 12-07-2007
Messages: 25

Re: Téléchargement d'un fichier généré

Merci sejaikin, mais je ne comprends pas.

Ma vue fait ceci :

Code:

<form name="fo" method = "post" action = "<?php echo $this->baseUrl; ?>/affichage/telFichier">
                    <table cellpadding=0 cellspacing=0 border=0 summary="Fichiers prets à etre envoyes">
                        <caption>Fichiers prêts à être envoyés</caption>

                                <?php
                                    $i = 0;
                                    $max = count($this->listeFichiers);
                                    if ($this->listeFichiers != null) {
                                        for ($i=0; $i<$max; $i++) {
                                ?>
                        
                        <tr>
                            <td headers="tab1col3 tab1lig3">
                                <a href="javascript:document.fo.submit();">
                                <?php
                                    echo $this->listeFichiers[$i];
                                        }
                                    }
                                ?>
                                </a>
                            
                            </td>
                            <td headers="tab1col3 tab1lig3">&nbsp;</td>
                        </tr>

                    </table>
                    <input id="fichier" name="fichier" type="hidden" value="export.csv">
                </form>

Y vois-tu quelque chose d'illicite ? smile

Merci,
J-Zender.

Hors ligne

 

#4 10-09-2007 17:08:26

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Téléchargement d'un fichier généré

lorsque tu clique sur ton lien tu active une action de ton contrôleur cette action ne dois pas utiliser de vue il te faut donc faire appel à noViewrenderer dans cette action.

sinon tu envois tes headers puis ton contenu qui est capté par ZF
une fois que ton action se termine ZF ouvre la vue associé à l'action et fait le rendu
tu perds donc ton contenu et zend_view t'envoie quelque chose. (soit une erreur soit un contenu à lui)

il te faut absolument dire à ton contrôleur que ton action se termine après la méthode d'action donc que tu ne veux pas qu'il utilise les vues.

A+JYT

Hors ligne

 

#5 11-09-2007 10:34:19

jzender
Membre
Date d'inscription: 12-07-2007
Messages: 25

Re: Téléchargement d'un fichier généré

Ok je comprends smile

Tout d'abord, merci beaucoup !

Ensuite, dans le manuel, ici :
http://framework.zend.com/manual/fr/zen … front.html
nous avons le code qui permet de désactiver le rendu automatique des vues :

Code:

<?php
// Désactivez l'aide ViewRenderer :
$front->setParam('noViewRenderer', true);

Cependant, cela le désactive dans toute l'application. Y a-t-il un moyen de ne le désactiver que dans la fonction du contrôleur concernée ?

Hors ligne

 

#6 11-09-2007 10:43:43

jzender
Membre
Date d'inscription: 12-07-2007
Messages: 25

Re: Téléchargement d'un fichier généré

J'ai trouvé ici :
http://julien-pauli.developpez.com/tuto … wrenderer/

Au début de la fonction concernée, dans mon contrôleur, j'ajoute :

Code:

$this->_helper->viewRenderer->setNoRender();

Merci à tous !
J-Zender.

Hors ligne

 

#7 11-09-2007 14:19:14

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: Téléchargement d'un fichier généré

une petit [Résolu] dans le titre en aidera d'autres!

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages