Bonjour.
Je tente d'effectuer un upload de fichier simple avec Symfony... et j'ai quelques soucis.
Voici le schéma yml correspondant aux Labels (les marques) :
J'ai généré le module labels à partir du modèle Label, j'ai donc bien un formulaire lorsque j'ajoute ou édite une marque.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Label: columns: name: { type: string(125), notnull: true, unique: true } description: { type: string(125) } logo: { type: string(255) }
J'ai configuré mon formulaire comme ceci :
J'avais bien l'input de type file qui s'affichait, mais lorsque je tentais de soumettre le tout j'obtenais un message d'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 class LabelForm extends BaseLabelForm { public function configure(){ $this->widgetSchema['logo'] = new sfWidgetFormInputFile(array( 'label'=>'Logo de la marque' )); $this->validatorSchema['logo'] = new sfValidatorFile(array( 'required' => false, 'path' => sfConfig::get('sf_upload_dir').'/labels', 'mime_types' => 'web_images', )); } }
Dans la classe action.class.php j'ai donc modifié ma méthode processForm de la sorte :This form is multipart, which means you need to supply a files array as the bind() method second argument.
C'est à dire que j'ai ajouté un deuxième paramètre à bind. Et là, lorsque je soumets le formulaire, la marque est bien créée ou éditée, mais aucun upload ne s'effectue malgré que l'input file soit renseigné...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 protected function processForm(sfWebRequest $request, sfForm $form) { $form->bind($request->getParameter($form->getName()), $request->getFiles('logo')); //$form->bind($request->getParameter($form->getName())); if ($form->isValid()) { $label = $form->save(); $this->redirect('labels/edit?id='.$label->getId()); } }
Je ne comprends pas... pourtant c'est bien "logo" que je doit mettre en paramètre de getFiles, puisque lorsque j'affiche le code source de mon formulaire j'obtiens ceci :
Si quelqu'un avait une piste...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <tr> <th><label for="label_logo">Logo de la marque</label></th> <td><input type="file" name="label[logo]" id="label_logo" />
Merci d'avance
Partager