mam problem z zapisem podmioty z powrotem do mnie ten błąd:Symfony2 __toString() Błąd
Catchable Fatal Error: Method My\BusinessBundle\Entity\Type::__toString()
must return a string value in
/var/www/MyBusiness0_1/vendor/doctrine/orm/lib/Doctrine/ORM/ORMInvalidArgumentException.php line 113
Najdziwniejsze jest to, że metoda __ toString() jest rodzajem jednostki!
class Type
{
//..
/**
* @var string
*
* @ORM\Column(name="type", type="string", length=100)
*/
private $type;
/**
* @ORM\OneToMany(targetEntity="MailTelCont", mappedBy="type")
*/
protected $mailTelContacts;
public function __construct()
{
$this->mailTelContacts = new \Doctrine\Common\Collections\ArrayCollection();
}
public function __toString()
{
return $this->getType();
}
//...
Kolejną dziwną rzeczą jest to, że jeśli mogę umieścić kaskadę = { „utrzymywać”} class MailTelCont na ManyToOne związku „typu” nie pokazuje mi ten błąd, ale zapisać nowe pole w typ ..
Klasa MailTelCont
class MailTelCont
{
//..
/**
* @var string
*
* @ORM\Column(name="contact", type="string", length=100)
*/
private $contact;
/**
* @ORM\ManyToOne(targetEntity="Type", inversedBy="mailTelContacts")
* @ORM\JoinColumn(name="type_id", referencedColumnName="id")
*/
private $type;
/**
* @ORM\ManyToOne(targetEntity="Anagrafica", inversedBy="mailTelContacts", cascade={"persist"})
* @ORM\JoinColumn(name="anagrafica_id", referencedColumnName="id")
* @Assert\Type(type="My\BusinessBundle\Entity\Anagrafica")
*/
private $anagrafica;
public function __toString()
{
return $this->getContact();
}
połączeń forma zagnieżdżonego "AnagraficType" w ten sposób:
class TypeType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('type', 'entity', array(
'class' => 'My\BusinessBundle\Entity\Type',
'attr' => array('class' => 'conct'),
'property' => 'type',
'label' => 'Tipologia',
))
;
}
*****
class MailTelContType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('type', new TypeType())
->add('contact', 'text', array('label' => 'Contatto'))
;
}
*****
class AnagraficaType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('mailTelContacts', 'collection', array('type' => new MailTelContType(),
'allow_add' => true,
'allow_delete' => true,
'prototype' => true,
'by_reference' => false
))
Gdzie robię źle?
Dziękuję za odpowiedź, ale teraz zwrócić ten błąd: 'Nowa jednostka została znaleziona przez związek„My \ BusinessBundle \ Entity \ MailTelCont # typ”, który nie został skonfigurowany do kaskady utrzymują operacje jednostki: telefono. Aby rozwiązać ten problem: Albo jawnie wywołaj EntityManager # persist() na tej nieznanej encji, albo skonfiguruj kaskadę, utrzymuj to skojarzenie w odwzorowaniu na przykład @ManyToOne (.., cascade = {"persist"}) ' jeśli wstawię 'cascade = {"persist"} "jednak zapisz nowe pole w typie, nie musisz, ponieważ typ jest tylko kontenerem wyborów typów kontaktu (np. e-mail, faks, telefon ..) – Lughino
to działa dla mnie, dzięki ;) –