Bonjour,
J'ai 2 entities Advert et Chat que je tente de mettre en relation en ManyToOne sur la table chat.
J'ai une erreur au chargement de la view qui m'indique une erreur string sur advert:
Catchable Fatal Error: Object of class gillesBundle\Entity\advert could not be converted to string.
Le hic est que lorsque je change le manytoone de chat vers ma table fosuser user.php entity cela fonctionne.
Donc pourquoi car j'ai cherché avec mon ami.
De plus avec user qui fonctionne cela me sort un choice "select" de tous les utilisateurs.
Hors comme c'est pour un chat l'utilisateur connecté ne doit pas pouvoir chatter avec lui même.
J'ai donc tenté de reprendre le formbuilder avec une condition pour enlever de l'array l'élément concerné de mon choice.
mais en vain et ne vois pas trop entre event services controller ou autre piste pour y remédier.
code version chat user qui fonctionne
entity user
entity chatter
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71 <?php namespace loginBundle\Entity; use Doctrine\ORM\Mapping as ORM; use FOS\UserBundle\Model\User as BaseUser; /** * user * * @ORM\Table() * @ORM\Entity(repositoryClass="loginBundle\Entity\userRepository") */ class user extends BaseUser { /** * @var integer * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ protected $id; /** * @var integer * * @ORM\Column(name="connected", type="string", length=255) */ protected $connected; /** * Get id * * @return integer */ public function getId() { return $this->id; } public function __construct() { parent::__construct(); // your own logic } /** * Set connected * * @param string $connected * * @return user */ public function setConnected($connected) { $this->connected = $connected; return $this; } /** * Get connected * * @return string */ public function getConnected() { return $this->connected; } }
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96 <?php namespace gillesBundle\Entity; use Doctrine\ORM\Mapping as ORM; /** * chatter * * @ORM\Table() * @ORM\Entity(repositoryClass="gillesBundle\Entity\chatterRepository") */ class chatter { /** * @var integer * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @var string * * @ORM\Column(name="message", type="string", length=255) */ private $message; /** * @ORM\ManyToOne(targetEntity="loginBundle\Entity\user", cascade={"persist"}) */ private $useridfor; /** * Get id * * @return integer */ public function getId() { return $this->id; } /** * Set message * * @param string $message * * @return chatter */ public function setMessage($message) { $this->message = $message; return $this; } /** * Get message * * @return string */ public function getMessage() { return $this->message; } /** * Set useridfor * * @param \loginBundle\Entity\user $useridfor * * @return chatter */ public function setUseridfor(\loginBundle\Entity\user $useridfor = null) { $this->useridfor = $useridfor; return $this; } /** * Get useridfor * * @return \loginBundle\Entity\user */ public function getUseridfor() { return $this->useridfor; } }
form chatterType
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 <?php namespace gillesBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use gillesBundle\Entity\chatter; use gillesBundle\Form\chatterType; class DefaultController extends Controller { public function indexAction() { $chatter = new chatter(); $form = $this->createForm(new chatterType(), $chatter); return $this->render('gillesBundle:Default:index.html.twig', array('form' => $form->createView())); } }
Maintenant je change juste le manytomany vers advert et ça foire. error advert to string.
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
44 <?php namespace gillesBundle\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolverInterface; use gillesBundle\Entity\advert; use gillesBundle\Form\advertType; class chatterType extends AbstractType { /** * @param FormBuilderInterface $builder * @param array $options */ public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('message') ->add('useridfor') ->add("submit","submit") ; } /** * @param OptionsResolverInterface $resolver */ public function setDefaultOptions(OptionsResolverInterface $resolver) { $resolver->setDefaults(array( 'data_class' => 'gillesBundle\Entity\chatter' )); } /** * @return string */ public function getName() { return 'gillesbundle_chatter'; } }
entity advert
entiity chatter modifier vers advert et qui foire.
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65 <?php namespace gillesBundle\Entity; use Doctrine\ORM\Mapping as ORM; /** * advert * * @ORM\Table() * @ORM\Entity(repositoryClass="gillesBundle\Entity\advertRepository") */ class advert { /** * @var integer * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @var string * * @ORM\Column(name="testadvert", type="string", length=255) */ private $testadvert; /** * Get id * * @return integer */ public function getId() { return $this->id; } /** * Set testadvert * * @param string $testadvert * * @return advert */ public function setTestadvert($testadvert) { $this->testadvert = $testadvert; return $this; } /** * Get testadvert * * @return string */ public function getTestadvert() { return $this->testadvert; } }
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
44 <?php namespace gillesBundle\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolverInterface; // use gillesBundle\Entity\advert; // use gillesBundle\Form\advertType; class chatterType extends AbstractType { /** * @param FormBuilderInterface $builder * @param array $options */ public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('message') ->add('useridfor') ->add("submit","submit") ; } /** * @param OptionsResolverInterface $resolver */ public function setDefaultOptions(OptionsResolverInterface $resolver) { $resolver->setDefaults(array( 'data_class' => 'gillesBundle\Entity\chatter' )); } /** * @return string */ public function getName() { return 'gillesbundle_chatter'; } }
ainsi que mon error retourné.
Catchable Fatal Error: Object of class gillesBundle\Entity\advert could not be converted to string
500 Internal Server Error - ContextErrorException
Bien à vous.
Partager