Bonjour à tous,

Je reviens vers vous car je dois remettre les mains dans du sf1.4.x

J'ai juste un léger problème :

Je dois créer un formulaire d'upload de fichier pour ensuite ouvrir ce dit-fichier et importer ses contenus en BDD.

Scénario somme toute assez banale, cependant mon formulaire n'est jamais valide. En me penchant sur le pourquoi je me suis rendu compte que les paramètres du fichier n'apparaissent pas dans la requête et donc ne sont jamais "bind" avec le form.

Je vous mets les morceaux de code concernés.

ImportForm.class.php :
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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
 
<?php
 
class ImportForm extends sfForm {    
 
    public function __construct() {        
        parent::__construct();
    }
 
    public function configure() {   
        $this->setWidgets(
            array(
                'fichier'     => new sfWidgetFormInputFile(),
                )
        );
        $this->widgetSchema->setNameFormat("import[%s]");
        $this->setValidators(
            array(
                'fichier'     => new sfValidatorFile(
                                        array(
                                            'required'  => true,
                                            'mime_types' => array(
                                                                'application/vnd.ms-excel',
                                                                'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
                                                                'text/csv'
                                                            ),
                                            'path'      => sfConfig::get('sf_upload_dir').'/import'
                                        )
                                    ),
            )
        );
    }
}
?>
actions.class.php

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
public function executeImport(sfWebRequest $request) {
 
        $this->form = new ImportForm();
 
        if($request->isMethod(sfRequest::POST)) {
            $this->form->bind($request->getParameter($this->form->getName()), $request->getFiles($this->form->getName()));
 
            if($this->form->isValid()) {
                $this->processImport();
            }
        }
    }
Résultat du
Code : Sélectionner tout - Visualiser dans une fenêtre à part
var_dump($request->getParameter($this->form->getName()))
Code : Sélectionner tout - Visualiser dans une fenêtre à part
array(1) { ["_csrf_token"]=> string(32) "ed458aad4f5eb27c5d19dfe0dca880f0" }
Résultat du
Code : Sélectionner tout - Visualiser dans une fenêtre à part
var_dump($request->getFiles($this->form->getName()))
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
array(1) {
  ["fichier"]=>
  array(5) {
    ["error"]=>
    int(6)
    ["name"]=>
    string(30) "monFichier.xlsx"
    ["type"]=>
    string(0) ""
    ["tmp_name"]=>
    string(0) ""
    ["size"]=>
    int(0)
  }
}
Si vous pouviez m'aider à valider ce formulaire svp...

Merci d'avance