Bonjour,
Voila je rencontre un petit problème avec mon code.
Ce que je fais
Dans la page show_message, il y a un form qui permet de laisser une message, avec les fields "title, message, parents_id"
namespace Yoda\MessageBundle\Entity;
...
/**
* @ORM\ManyToOne(targetEntity="Message")
* @ORM\JoinColumn(name="parents_id", referencedColumnName="id")
*/
public $parents;
function getParents()
{
return $this->parents;
}
function setParents(Message $parents)
{
$this->parents = $parents;
return $this;
}
...
namespace Yoda\MessageBundle\Form;
...
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('title')
->add('message', TextareaType::class, array('attr' => array('class' => 'tinymce')))
//->add('active')
->add('parents', HiddenType::class);
//->add('owner');
}
...
namespace Yoda\MessageBundle\Controller;
public function newAction(Request $request)
{
$message = new Message();
$form = $this->createForm('Yoda\MessageBundle\Form\MessageType', $message);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$message->setCreateDate(new \DateTime());
$message->setOwner($this->getUser());
$em->persist($message);
$em->flush();
// if it is a children message, we will show parents message
$redirectId = $message->getParents()->getId() ? $message->getParents()->getId() : $message->getId();
return $this->redirectToRoute('message_show', array('id' => $redirectId));
}
return array(
'message' => $message,
'form' => $form->createView(),
);
}
public function showAction(Message $message)
{
$addForm = $this->createForm('Yoda\MessageBundle\Form\MessageType');
$addForm->get('parents')->setData($message->getId());
$childrenMessage = $this->getChildren($message);
//var_dump($childrenMessage);
return array(
'add_form' => $addForm->createView(),
'message' => $message,
'childrens' => $childrenMessage,
);
}
Ce que je veux
quand on répond, on ajoute une ligne dans la base.
Ce que j'obtiens
Quand on commit, Il me retourne une message érreur
Catchable Fatal Error: Argument 1 passed to Yoda\MessageBundle\Entity\Message::setParents() must be an instance of Yoda\MessageBundle\Entity\Message, string given, called in C:\xampp\htdocs\symfony_projet2\vendor\symfony\symfony\src\Symfony\Component\PropertyAccess\PropertyAccessor.php on line 556 and defined