Bonjour, suite à bien des recherches j'ai pas trouvé de solution à mon problème.

Je suis débutant sur ZF, et je dois créer une application de gestion de restauration scolaire.

On me demande de pouvoir télécharger des fichier aux format CSV (excel) depuis une base de donnée.

j'arrive à convertir ma BD, mais j'arrive pas à renvoyé le fichier créer.
J'utilise les entête spéciale pour ça , a savoir 'Content-Type', 'Content-Disposition', 'filename'.
Le problème est que filename pointe bien vers le fichier, mais que lorsque la boite de dialogue s'ouvre, l'adresse à changé, les '\' on été changé par des '_', comme le fais l'url rewinting de zend.
Du coup je télécharge un fichier vide.

Je vous file des bouts de code pour mieux comprendre, voici la fonction du controlleur

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
 
function exporterAction(){
         $this->view->title = "Exporter une base de donnée"; 
         if ($this->getRequest()->isPost()) {
             $this->_helper->viewRenderer->setNoRender(true);
             $this->_helper->layout->disableLayout();
 
             $exportObject = IDSelf_Convert_CSV::getInstance();
             header("Content-type: csv" ); 
             header("Content-Type: application/octet-stream" );
             header("Content-Disposition: attachment; filename=".$exportObject->convert($this->getRequest()->getPost('table'))->getAbsolutePath());
 
         }else{
             $table = new Table();
             $this->view->tables = $table->fetchAll();
             $this->render('exporterselect');
         }
    }
et voici la fonction de mon singleton qui doit convertir le fichier

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
 
public function convert($bdname){
        $select = Zend_Db_Table_Abstract::getDefaultAdapter()->select()->from($bdname);
        $data = Zend_Db_Table_Abstract::getDefaultAdapter()->fetchAll($select);
 
        $fd = fopen($this->getRelativePath(), 'w+');
        foreach ($data as $item) {
            fputcsv($fd, $item, ';', '"');
        }
        rewind($fd);
 
        $csvContent = stream_get_contents($fd);
        fclose($fd);
 
        return $this;
    }
enfin voici le .htaccess
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
# Règles de réécriture pour Zend Framework
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteBase /test2
RewriteRule !\.(js|ico|gif|jpg|png|css|swf|PNG|pdf|doc|PDF|DOC|csv|CSV)$ index.php
 
# Sécurité : Ne pas autoriser le parcours de répertoires
Options -Indexes
 
# Configuration PHP
php_flag magic_quotes_gpc off
php_flag register_globals off
php_flag short_open_tag on
voilà, j'espère que vous pourrais m'aider

bye