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 Neither the property nor one of the methods "get()", "is()", "has() [2.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 33
    Par défaut Erreur Neither the property nor one of the methods "get()", "is()", "has()
    Bonjour,

    Je débute avec les SF2, je tente de réaliser un formulaire de contact (sans enregistrement des données en BDD donc) en suivant la doc officielle mais je galère un peu, je rencontre des erreurs à chaque étape...

    J'ai l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Neither the property "contact" nor one of the methods "getContact()", "isContact()", "hasContact()", "__get()" exist and have public access in class "Open\OpcBundle\Entity\Contact".
    Voici le code de mon contrôleur :

    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
     
    // src/Open/OpcBundle/Controller/OpcController.php
     
    namespace Open\OpcBundle\Controller;
     
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use Open\OpcBundle\Entity\Contact;
    use Symfony\Component\HttpFoundation\Request;
    use Open\OpcBundle\Form\Type\ContactType;
     
    class OpcController extends Controller {
     
       public function contactAction(Request $request) {      
          $contact = new Contact();
     
          $form = $this->createForm(new ContactType(), $contact);
     
          $form->handleRequest($request);
     
          if ($form->isValid()) {
             // return $this->redirect($this->generateUrl('contact_success'));
          }      
     
          return $this->render("OpenOpcBundle:Opc:contact.html.twig", array("formu" => $form->createView(),));      
       } // -- contactAction()  
    } // -- classe
    Code de mon entité Contact :

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    // src/Open/OpcBundle/Entity/Contact.php
     
    namespace Open\OpcBundle\Entity;
     
    class Contact {
       protected $nom;
       protected $courriel;
       protected $sujet;
       protected $msg;
     
    public function getNom() {
          return $this->nom;
       }
     
       public function setNom($nom) {
          $this->nom = $nom;
       }
     
       public function getCourriel() {
          return $this->courriel;
       }
     
       public function setCourriel($courriel) {
          $this->courriel = $courriel;
       }
     
       public function getSujet() {
          return $this->sujet;
       }
     
       public function setSujet($sujet) {
          $this->sujet = $sujet;
       }
     
       public function getMsg() {
          return $this->msg;
       }
     
       public function setMsg($msg) {
          $this->msg = $msg;
       }  
    } // -- classe
    Ma classe ContactType :

    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
    # src/Open/OpcBundle/Form/Type/ContactType.php
    namespace Open\OpcBundle\Form\Type;
     
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilderInterface;
     
    class ContactType extends AbstractType {
     
       public function buildForm(FormBuilderInterface $builder, array $options) {
          $builder->add('contact');
          $builder->add('nom', 'text', array('max_length' => 30, 'label' => 'Prénom, nom*', 'trim' => true, 'attr' => array('size'=>'30')))
                  ->add('courriel', 'email', array('max_length' => 255, 'label' => 'Adresse email*', 'trim' => true, 'attr' => array('size'=>'30')))
                  ->add('sujet', 'text', array('max_length' => 255, 'label' => 'Objet*', 'trim' => true, 'attr' => array('size'=>'30')))
                  ->add('msg', 'textarea', array('attr' => array('rows' => '10','cols' => '80')))
                  ->add('submit', 'submit');
       }
     
       public function getName() {
          return "Contact";
       }
    }
    Je comprends bien l'erreur qui se situe visiblement dans l'entité Contact (Entity/Contact.php), mais j'ai beau avoir vérifier je ne trouve pas comment corriger . Rien dans la doc (le code de mon entité est celui trouvé dans la doc) et je ne trouve pas non plus sur le web.

    Merci d'avance

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Par défaut
    Neither the property "contact" nor one of the methods "getContact()", "isContact()", "hasContact()", "__get()" exist
    and have public access in class "Open\OpcBundle\Entity\Contact".
    le formulaire te réclame une méthode ou propriété contact dans la classe Open\OpcBundle\Entity\Contact.il faut ajouter ceci dans la classe Open\OpcBundle\Entity\Contact:

    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
     
     
    // src/Open/OpcBundle/Entity/Contact.php
     
    namespace Open\OpcBundle\Entity;
     
    class Contact {
     
       private $contact;
     
    public function getContact(){
    return $this->contact;
    }
     
    /**
       * Set contact
       *
       * @param string $contact
       * @return Contact
       */
    public function setContact($contact){
    $this->contact = $contact;
    return $this;
    }
     
    } // -- classe

  3. #3
    Membre Expert 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 : 37
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Par défaut
    En l'occurrence c'est un getter qui est demandé donc c'est une méthode getContact() qu'il te faut mais oui c'est juste.
    De toute manière il te faudra certainement les deux.

  4. #4
    Membre averti Avatar de anikon
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2007
    Messages : 57
    Par défaut
    Effectivement il te manque la propriété contact ainsi que ses getter/setter dans ton entity mais je me serais posée la question inverse. Pourquoi mettre un champ contact dans ton form alors que cette propriété n'existe pas et qu'elle ne sert à priori à rien puisque ton contact est bien défini par nom, courriel, sujet, msg.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2.x] Erreur Neither the property "name"
    Par Hotgeart dans le forum Symfony
    Réponses: 3
    Dernier message: 08/10/2013, 09h23
  2. Réponses: 0
    Dernier message: 30/08/2012, 01h40
  3. Réponses: 4
    Dernier message: 11/03/2010, 17h02
  4. Réponses: 3
    Dernier message: 23/05/2008, 15h26
  5. Réponses: 1
    Dernier message: 26/07/2007, 17h29

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