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) :
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 généré le module labels à partir du modèle Label, j'ai donc bien un formulaire lorsque j'ajoute ou édite une marque.

J'ai configuré mon formulaire comme ceci :
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',
		));
	}
}
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 :
This form is multipart, which means you need to supply a files array as the bind() method second argument.
Dans la classe action.class.php j'ai donc modifié ma méthode processForm de la sorte :
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());
 }
}
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é...

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 :
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" />
Si quelqu'un avait une piste...

Merci d'avance