Передача Entity в метод createForm в Symfony4 - PullRequest
0 голосов
/ 12 марта 2019

Когда я пытаюсь создать форму и передать Entity методу createForm в symfony4, возникает исключение, как показано ниже. An exception has been thrown during the rendering of a template ("Catchable Fatal Error: Object of class App\Entity\Email could not be converted to string").

ниже мой код, пока

Код контроллера

/**
     * @Route("/email/new", name="new_email")
     * Method({"GET","POST"})
     */

    public function new(Request $request)
    {
        $email = new Email();

//        $email->setEmailAddress('fgesg');
//        $email->setDeleted('0');

        $form = $this->createForm(EmailType::class, $email);
        return $this->render('main/new_email.html.twig',array(
            'form' => $form->createView()
        ));
    }

Email.php - Entity

<?php

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity(repositoryClass="App\Repository\EmailRepository")
 */
class Email
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(type="text", nullable=true)
     */
    private $emailAddress;

    /**
     * @ORM\Column(type="integer", nullable=true)
     */
    private $deleted;

   //all getters and setters here
}

EmailType.php

<?php

namespace App\Form;

use App\Entity\Email;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;

class EmailType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('emailAddress')
            ->add('deleted')
        ;
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => Email::class
        ]);
    }
}

Если объект не передан, он создает форму, но с одним дополнительным текстовым полем электронной почты. В любом случае я хочу показать существующие данные электронной почты, поэтому мне нужно вставить объект электронной почты.

Пожалуйста, помогите мне в этом.

---- Редактировать -------- ниже шаблон new_email.html.twig

{% extends 'base.html.twig' %}

{% block body %}
    {{ form_row(form.emailAddress) }}
    {{ form_row(form.deleted) }}
    {{ form_row(form.save) }}
{% endblock %}
{% block javascripts %}
    <script type="text/javascript">
        $(function() {
            alert( "ready!" );
        });
    </script>
{% endblock %}

1 Ответ

0 голосов
/ 13 марта 2019

Я добавил ниже к сущности, и ошибка была исправлена.

public function __toString()
{
   return (string) $this->emailAddress;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...