Bonjour,
Pour un gestionnaire de fichier en ligne,
je rencontre actuellement un problème avec l'upload de fichier.
Lorsque je teste mon formulaire directement sur la vue, avec l'adresse :
http://localhost/odm_E/user/index/upload
Il fonctionne, le fichier est ajouté dans la base de données, et en physique sur le serveur. Super
Mais dès que j'utilise dojo pour afficher ce formulaire dans une fenêtre intéractive (l'affichage fonctionne très bien). Je clique sur le bouton de validation du formulaire, la page se rafraichit mais aucune autre action ne se produit.
Firebug ne m'affiche pas d'erreur, mais il ne se passe rien, il n'y a pas d'upload.
http://localhost/odm_E/user/panel/main
J'utilise d'autre formulaire avec dojo mais seul l'upload ne marche pas.
J'ai cherché un peu partout sur internet sur la doc Zend, sur la doc Dojo, sur divers forum... sans rien trouver de concret.
Dans le controller
indexController.php
Le formulaire
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 <?php /** * Allow to display formular in a dojo dialog. */ public function uploadAction(){ $this->_helper->layout->disableLayout(); $form = new User_Form_Upload(); $form->setEnctype(Zend_Form::ENCTYPE_MULTIPART); /* * For the formular request */ if($this->_request->isPost()){ $formData = $this->_request->getPost(); //$form = $this->view->form; //When it submit // --->>>> Avec dojo je n'ai pas l'impression qu'il rentre dans cette condition if($form->isValid($formData)){ //Retrieval of input information $fileName = $form->getValue('File'); $desc = $form->getValue('Description'); //get the ComposantElements database $CETable = new Default_Model_DbTable_ComposantElements(); //get the mail of the user $user = Zend_Auth::getInstance()->getIdentity(); $mail = $user->mail; //path is the name of the folder of the user space $user = new Default_Model_DbTable_Utilisateur(); $path = $user->getCurrentUserRoot(); $row = $CETable->createRow(); $row->thePath = $fileName; $row->author = $mail; $row->name = $fileName; Zend_Date::setOptions(array('format_type' => 'php')); $date = new Zend_Date(); $row->dateModification = $date->toString('Y-m-d'); $row->dateCreation = $date->toString('Y-m-d'); $row->description = $desc; $row->type = "FILE"; $row->save(); } else { $form->populate($formData); echo "Not valid"; } } else { echo "Not post"; $this->view->form = $form; } }//---------------------------------- upload()
Upload.php
Je pense que le problème viens du javascript mais je suis un novice en ajax.
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
36
37
38 <?php /** * Upload a file */ class User_Form_Upload extends Zend_Form{ public function init(){ //For traduction $translate = Zend_Registry::get('translate'); $this->setName("uploadForm"); $this->setMethod('post'); $this->setAttrib('enctype', 'multipart/form-data'); //For file $user = new Default_Model_DbTable_Utilisateur(); $path = $user->getCurrentUserRoot(); $file = new Zend_Form_Element_File('FileUpload'); $file->setLabel($translate->_('File')) ->setDestination(APPLICATION_PATH.'/../espace/user/'.$path); //the file will be uploaded here $this->addElement($file, 'File', array( 'required' => true, )); //description $this->addElement( 'text', 'Description', array( 'label' => $translate->_('Description'), 'required' => true, 'filters' => array('StringTrim'), )); //submit button $dojoButton = new Zend_Dojo_Form_Element_SubmitButton(('Upload_submit')); $dojoButton->setLabel($translate->_("Send")) ->setAttrib('onclick',"javascript:upload()"); $this->addElement($dojoButton); }//-------------------------- init() }//------------------------------------------ User_Form_Upload()
main.phtml + (javascript Normalement il n'est pas dans ce 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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92 <head> <script language="JavaScript" type="text/javascript"> dojo.require("dijit.Dialog"); dojo.require("dijit.form.TextBox"); dojo.require("dijit.form.Button"); dojo.require("dijit.Menu"); dojo.require("dojo.parser"); // scan page for widgets and instantiate them </script> <script language="JavaScript" type="text/javascript"> /** * Most of function use AJAX and dojo */ /** * Allow to display a formular to create a new folder. */ function showFolder() { dojo.xhrGet({ //Call view to display form. url:"<?php echo $this->baseUrl(); ?>/user/index/newfolder", load: function(data){ //Add view content to the div and display it. dojo.byId('content2').innerHTML = data; dijit.byId('newFolder').show(); } });//--------xhrGet() }//--------------------- showFolder() /** * Create a new folder. */ function newFolder(){ dojo.xhrPost({ url:"<?php echo $this->baseUrl(); ?>/user/index/newfolder", form: dojo.byId("newFolderForm"), load: function(data){ //Add dijit.byId('newFolder').hide(); } });//-------xhrPost() }//---------------- newFolder() /* * Display dialog for uploaded */ function showUpload(){ dojo.xhrGet({ url:"<?php echo $this->baseUrl(); ?>/user/index/upload", load: function(data){ dojo.byId('content').innerHTML = data; dijit.byId('upload').show(); } });//----xhrGet() }//---------------- showUpload() /*ICI CA NE MARCHE PAS * Upload file on the server. */ function upload(){ dojo.xhrPost({ url:"<?php echo $this->baseUrl(); ?>/user/index/upload", form: dojo.byId("uploadForm"), load: function(data){ dijit.byId('upload').hide(); });//-----xhrPost() alert("Guy");//Ici j'ai bien l'alert qui s'affiche }//----------------- upload() </script> </head> ... <!-- necessary div for dojo --> <!-- la fenetre d'upload --> <div dojoType="dijit.Dialog" id="upload" title="Upload"> <div id="content"></div> </div> <!-- create the Dialog with a form to create a new folder --> <div dojoType="dijit.Dialog" id="newFolder" title="Create a new Folder"> <div id="content2"></div> </div>
upload.phtml
Merci d'avance pour votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <?php echo $this->form; ?>
Watermy
Partager