Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/02/2011, 15h26   #1
Invité régulier
 
Inscription : novembre 2004
Messages : 26
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 26
Points : 7
Points : 7
Par défaut probleme message lors upload

j'ai suivi la doc et rechercher depuis quelques jours sur les forums

j'ai un formulaire avec un fileselect pour upload un fichier (appelé : fichier), et quand je fais "save", j'ai les messages suivant :

Citation:
Unexpected extra form field named "name".
Unexpected extra form field named "type".
Unexpected extra form field named "tmp_name".
Unexpected extra form field named "error".
Unexpected extra form field named "size".
voici mon source

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
// fichier apps/backend/modules/chrono_recus/actions/actions.class.php
protected function processForm( sfWebRequest $request, sfForm $form )
{
  $this->form = new chronorecuForm();
  $request = $this->getRequest();
 
  $params = array(
    'fichier' => $request->getFiles( 'fichier' ),
    );
 
  $this->form->bind( $params, $request->getFiles( 'fichier' ) );
  if ( $this->form->isValid() )
  {
    $file = $this->form->getValue( 'fichier' );
    $filename = 'uploaded_' . sha1( $file->getOriginalName() );
    $extension = $file->getExtension( $file->getOriginalExtension() );
    $file->save( sfConfig::get( 'sf_upload_dir' ) . '/' . $filename . $extension );
 
    $result = $this->form->save();
    $this->getUser()->setFlash( 'notice', "La sauvegarde s'est bien déroulée" );
    $this->redirect( '@chrono' );
  }
}
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
// fichier lib/form/doctrine/chronorecuForm.class.php
public function configure()
{
  $this->setWidgetSchema( new sfWidgetFormSchema( array(
 
        'fichier' => new sfWidgetFormInputFile(
          array(
            'label' => 'Fichier : ',
            ) 
          ),
 
        ) ) );
 
  $this->setValidators( array( 
      'fichier' => new sfValidatorFile(
        array( 
          'required' => false,
          'path' => sfConfig::get( 'sf_upload_dir' ) . '/images',
          )
        ), 
 
      ) );
}
merci par avance
hellosct1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 10h00   #2
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Tu les as à quel moment tes messages ? Sur quel traitement ?

Pourquoi redéfinir dans processForm l'objet $request alors qu'il est déjà envoyé dans l'appel de fonction ?

Tu crées une variable $param qui est un array avec les données de transfert du fichier. Et tu lies (->bind() ) ton form deux fois avec ces données ($param puis par getFiles() ), hors le bind doit être lié avec le retour des champs puis les fichiers. Je pense que ton erreur vient de là, je suis sur que ton code ainsi rédigé ne peut fonctionner.

Ensuite tu fais une sauvegarde du form et récupère le retour dans $result qui n'est pas exploité. Dans mes souvenirs, le retour de save() d'un form est un pointeur sur l'objet form en lui même, aucun intérêt de récupérer la valeur.

Dans ton configure, tu utilises un setWidgetSchema, ce qui a pour effet de supprimer tous le schéma prééxistant (défini dans le setup() de chronorecuBaseForm je suppose). Est-ce bien ce que tu veux faire ?
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h39.


 
 
 
 
Partenaires

Hébergement Web