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 :

Error: Call to a member function get() on a non-object


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Février 2012
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2012
    Messages : 404
    Par défaut Error: Call to a member function get() on a non-object
    Bonjour tous,

    j'ai un probléme que j'arrive pas à le résoudre. je suis en train d'ajouter (POST) des données dans ma BD. Donc j'ai developpé une foncion "AjouterActif()" dans la couche metier, voilà mon essai:
    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 ActifsImpl extends Controller implements ActifsMetier
    {
    public function AjouterActif(Request $request){
     
        $actif = new actifs();
         $form = $this->createForm(new ActifsType(),$actif);
         $form->submit($request->request->all());
     
         if ($form->isValid()) {
             $em = $this->getDoctrine()->getManager();
             $em->persist($actif);
             $em->flush();
     
             return $actif;
         }else{
             return $form;
         }
     }
     
    }
    Voilà le code de mon controlleur:
    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
     
    public function CreateActifAction(Request $request)
     {
     
     $objactif=$this->get('emtity_manager_actifs')->AjouterActif($request) ;
     if(is_object($objactif))
    {
        return $this->redirect($this->generateUrl('Web_getUn_actifs', array('id' => $objactif->getIdactif())));
     }
     
        return $this->render('WebCIsBenchmarksActifsBundle:Default:index.html.twig',
         array('listActifs' => $entities ,
             'test' => '0',
              //'form' => $form->createView()
               )
         );
      }
    il affiche le message d'erreur suivant:
    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
    rror: Call to a member function get() on a non-object
    500 Internal Server Error - FatalErrorException
     
    //Stack Trace
    //in vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Controller/Controller.php at line 250   -
         */
        public function createForm($type, $data = null, array $options = array())
        {
            return $this->container->get('form.factory')->create($type, $data, $options);
        }
        /**
    ---
    /*at Controller ->createForm ()  in src/CisBenchMarksBundle/Metier/ActifsImpl.php at line 51   -*/
     
     public function AjouterActif(Request $request){
           $actif = new actifs();
            $form = $this->createForm(new ActifsType(),$actif); //ligne 51
            $form->submit($request->request->all());
    merci de m'aider pour résoudre ce probléme.

  2. #2
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    Call to a member function get() on a non-object
    tu fais un get sur une variable qui n'est pas un objet.

    il peut être à null ou être un tableau... à analyser...

  3. #3
    Membre éclairé
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Février 2012
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2012
    Messages : 404
    Par défaut
    merci pour ta réponse,

    J'ai pas compris que le paramètre passé n'est un object par contre $actif est un object
    Comment je peux résoudre ce problème.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $form = $this->createForm(new ActifsType(),$actif); //ligne 51

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2013
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2013
    Messages : 739
    Par défaut
    Bonjour,
    si le formulaire est invalide , alors AjouterActif retourne $form . Apres $form->getIdactif() n'a pas de sens .
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     if(is_object($objactif))
    {
     
     }
    tu peux tester si $objactif est une instance de la classe d'objet machin .
    c'est plus garanti , ben j’espère .

  5. #5
    Membre éclairé
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Février 2012
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2012
    Messages : 404
    Par défaut
    j'ai changé la fonction comme tu as dit mon ami MehrezLabidi :
    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
     
     public function AjouterActif(Request $request)
        {
         $actif = new actifs();
           // var_dump($actif); exit();
      $form = $this->createForm(new ActifsType(),$actif); // erreur ici
       $form->submit($request->request->all());
          //  $form->handleRequest($request);
     
            if ($form->isValid()) {
                $em = $this->getDoctrine()->getManager();
                $this->em->persist($actif);
                $this->em->flush();
            }
     
            return $actif;
     
     }
    le problème que la createFom ne connait pas que $actif est un objet.
    j'ai testé cette variable mais elle est null :^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $actif= new Actifs();
    var_dump($actif);
    // résultat
    object(CisBenchMarksBundle\Entity\Actifs)[570]
      private 'idactif' => null
      private 'nomActif' => null
      private 'detaille' => null
      private 'dateAjoutActif' => 
        object(Symfony\Component\Validator\Constraints\DateTime)[571]
          public 'message' => string 'This value is not a valid datetime.' (length=35)
          public 'payload' => null
      private 'dateModificationActif' => null
    et-ce -qu'il y a un service affaire ?
    merci encore ,

  6. #6
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2013
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2013
    Messages : 739
    Par défaut
    Si j'ai bien compris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $form = $this->createForm(new ActifsType(),$actif); // erreur ici
    tu dis que createFom ne connait pas que $actif est un objet .
    Montre nous le contenu de ActifsType .
    Es ce que 'data_class' du fichier ActifsType contient déja " CisBenchMarksBundle\Entity\Actifs" ???

Discussions similaires

  1. [PDO] Fatal error: Call to a member function fetch() on a non-object
    Par blopjerem dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 03/12/2009, 10h53
  2. Réponses: 4
    Dernier message: 07/10/2009, 11h53
  3. Réponses: 4
    Dernier message: 02/10/2009, 10h12
  4. [PDO] Fatal error: Call to a member function setFetchMode() on a non-object in
    Par tores20 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 28/07/2009, 23h04
  5. [PHP 5.2] Fatal error: Call to a member function bindValue() on a non-object
    Par TeraD dans le forum Langage
    Réponses: 4
    Dernier message: 23/06/2009, 00h20

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