J'utilise Symfony 1.3.2 sur Ubuntu et j'ai un formulaire qui contient plusieurs widgets. Un widget est le fichier sfWidgetFormInputFile, qui permet à un utilisateur de sélectionner une image.Formulaires Symfony - mémorisation d'un fichier précédemment sélectionné
Si le formulaire n'est pas valide, je le présente de nouveau à l'utilisateur, pour corriger le (s) champ (s) erroné (s). Le problème que j'éprouve est celui actuellement, quand le foem ne valide pas (pour n'importe quelle raison), le fichier d'image qui a été spécifié par l'utilisateur est perdu (c'est-à-dire qu'ils doivent sélectionner le dossier encore).
Comment est-ce que je peux montrer le formulaire à l'utilisateur encore, avec le fichier d'image choisi toujours là (ainsi ils ne doivent pas sélectionner le dossier encore)? Dans mon action qui traite le formulaire POSTed, j'appelle getFiles ($ key), puis j'indexe le tableau récupéré pour obtenir les informations sur le fichier et la définition de la valeur par défaut du widget (voir ci-dessous). Cependant, le widget rendu est vide (ne conserve pas la valeur du chemin d'accès au fichier sélectionné précédemment
Un bout de code mon (action) ressemble à ceci:.
$files = $request->getFiles('foobar');
if(!empty($files) && isset($files['pict_path'])){
$pic_info = $files['pict_path'];
$originalName =$pic_info['name'];
$type = $pic_info['type'];
$tempName = $pic_info['tmp_name'];
$size = $pic_info['size'];
$pict_file = new sfValidatedFile($originalName, $type, $tempName, $size);
$this->form->setWidget('pict_path', new sfWidgetFormInputFile(array('default'=>$pict_file)));
}
Quelqu'un peut-il suggérer comment pense appliquer correctement le comportement souhaité décrit ci-dessus
?