[Résolu] Upload de fichier : bind
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:
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:
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 :
Citation:
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:
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:
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