IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Erreur a l'affichage d'un input file


Sujet :

Symfony PHP

  1. #1
    Membre régulier Avatar de Shandler
    Profil pro
    Inscrit en
    Février 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 514
    Points : 107
    Points
    107
    Par défaut Erreur a l'affichage d'un input file
    Bonjour,

    J'utilise Gedmo pour télécharger mon fichier (https://github.com/Atlantic18/Doctri.../uploadable.md) tous se passe bien pour l'enregistrement en base et le téléchargement du fichier.

    Mais voila dans que je recharge mon formulaire avec les données que jai en base, j'ai cette erreur ci-dessous.

    The form's view data is expected to be an instance of class Symfony\Component\HttpFoundation\File\File, but is a(n) string. You can avoid this error by setting the "data_class" option to null or by adding a view transformer that transforms a(n) string to an instance of Symfony\Component\HttpFoundation\File\File.
    Sachant que j'utilise l'entité donné dans l'exemple de uploadable et que jai testé en mettant data_class a nul ce qui me charge bien mon formulaire mais quand je l'envoie il me dit que le champ path n'est pas Symfony\Component\HttpFoundation\File\UploadedFile Object.

    ci-dessous mon controller
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
            $files = $this->getDoctrine()
                ->getRepository('AcmeTestBundle:File')
                ->find(1);
     
            $form = $this->createFormBuilder($files)
                ->add('path','file')
                ->add('save', 'submit');
                ->getForm()
            ;
     
            if ($this->getRequest()->getMethod() === 'POST') {
                $form->bind($this->getRequest());
     
                if ($form->isValid()) {
                    $uploadableManager = $this->get('stof_doctrine_extensions.uploadable.manager');
                    // Here, "getMyFile" returns the "UploadedFile" instance that the form bound in your $myFile property
                    $uploadableManager->markEntityToUpload($document, $document->getMyFile());
     
                    $em = $this->getDoctrine()->getManager();
                    $em->persist($document);
                    $em->flush();
                }
            }
     
            return $this->render('AcmeTestBundle:form.html.twig', array(
                'form' => $form->createView(),
            ));
    Merci a vous.

  2. #2
    Membre régulier Avatar de Shandler
    Profil pro
    Inscrit en
    Février 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 514
    Points : 107
    Points
    107
    Par défaut
    Je me permet de faire un up pour savoir si quelqu'un aurait une piste car la je sais plus où chercher.

    Merci encore.

  3. #3
    Membre expérimenté Avatar de Nico_F
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Points : 1 310
    Points
    1 310
    Par défaut
    Hello, tout est dans le message d'erreur : You can avoid this error by setting the "data_class" option to null or by adding a view transformer that transforms a(n) string to an instance of Symfony\Component\HttpFoundation\File\File

    Crée ton formulaire en lui indiquant une valeur pour l'option data_class ou en lui indiquant un transformer (pas les voitures).
    Jète un oeil à la doc pour voir comment on construit un formulaire correctement.

    Autre chose, je ne sais pas si c'est pour simplifier le debug ou l'affichage sur dvp, mais un peu d'ordre ne ferait pas de mal à ton code :
    • les requêtes => Repository
    • la création d'un form => FormType
    • le traitement du form => éventuellement dans le contrôleur mais idéalement dans un FormHandler


    ++

  4. #4
    Membre régulier Avatar de Shandler
    Profil pro
    Inscrit en
    Février 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 514
    Points : 107
    Points
    107
    Par défaut
    Salut,

    Merci pour ta réponse, sinon oui j'ai tous groupé dans le contrôleur pour tester c'est plus simple mais sinon je fais ca plus propre :-).

    Sinon jai bien compris, tu me dis de faire comme ci-desous et donc je viens de tester et il me renvoie toujours la même erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            $form = $this->createFormBuilder($files)
                ->add('path','file',array(
                        'data_class' => 'Symfony\Component\HttpFoundation\File\File' 
                    ))
                ->add('save', 'submit')
                ->getForm()
            ;

  5. #5
    Membre expérimenté Avatar de Nico_F
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Points : 1 310
    Points
    1 310
    Par défaut
    Non pas vraiment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'Acme\MyBundle\Form\Model\MyFormClass'
        ));
    }
    Si je faisais référence au FormTypes c'est parce qu'ils possèdent une méthode qui permet de définir à quel type de classe/d'entité correspond le formulaire quand tu veux le binder.

  6. #6
    Membre régulier Avatar de Shandler
    Profil pro
    Inscrit en
    Février 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 514
    Points : 107
    Points
    107
    Par défaut
    J'ai testé mais cela ne change toujours rien, jai essayé avec data_class => Acme\TestBundle\Entity\File ou Symfony\Component\HttpFoundation\File\File mais toujours cette 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
    15
    16
    17
    18
    19
    20
    21
    22
    class ImageType extends AbstractType
    {
     
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder->add('path', 'file')
                    ->add('save', 'submit')
            ;
        }
     
        public function setDefaultOptions(OptionsResolverInterface $resolver)
        {
            $resolver->setDefaults(array(
                'data_class' => 'Acme\TestBundle\Entity\File',
            ));
        }
     
        public function getName()
        {
            return 'image';
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $form = $this->createForm(new ImageType(), $files);

Discussions similaires

  1. Erreur:The input file was not found (jxl.read.biff.BiffException)
    Par impossibeulman dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 05/08/2008, 14h56
  2. récupérer la valeur d'un input file
    Par july dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 26/11/2007, 11h17
  3. Input File multiples
    Par odelayen dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 21/02/2005, 14h46
  4. Valeur par default dans un input file ?
    Par alainme dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 11/02/2005, 14h31
  5. Input File, Request.form Firefox, Chemin non spécifié
    Par Phenolphtaleine dans le forum ASP
    Réponses: 6
    Dernier message: 13/01/2005, 09h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo