我创建了一个“ClientType”与“信息类型”和“ContactType”。 客户端可以有多个信息和联系人所以我使用一个表格,即嵌入客户端,信息和联系人。Symfony3错误embeddedin形式
当我打印表格也没关系,但只要我刷新:
Catchable Fatal Error: Argument 1 passed to Doctrine\Common\Collections\ArrayCollection::__construct() must be of the type array, object given, called in C:\wamp\www\LinkWebCRM\vendor\doctrine\orm\lib\Doctrine\ORM\UnitOfWork.php on line 605 and defined
我试图用的“信息类型”“CollectionType”和“ContactType”但后来我得到了很多形式的警告“这个值是无效的。”,“这种形式不应包含额外的领域。”,和8倍的形式对信息和联系......
ClientType:
class ClientType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('nom', TextType::class);
$builder->add('prenom', TextType::class);
$builder->add('informations', InformationType::class);
$builder->add('contacts', ContactType::class);
$builder->add('Enregistrer', SubmitType::class);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'CommonBundle\Entity\Client',
));
}
}
信息:
class InformationType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('nomEntreprise', TextType::class);
$builder->add('sIRET', TextType::class);
$builder->add('typeSite', TextType::class);
$builder->add('adresseEntreprise', TextType::class);
$builder->add('dateSignature', DateTimeType::class, array(
'years' => range(date("Y"), date('Y-m-d',strtotime(date("Y-m-d", time()) . " + 1825 day")))
));
$builder->add('nomDomaine', TextType::class);
$builder->add('dateMiseEnLigne', DateTimeType::class, array(
'years' => range(date("Y"), date('Y-m-d',strtotime(date("Y-m-d", time()) . " + 1825 day")))
));
$builder->add('commentaire', TextType::class);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array('data_class' => null));
}
}
ContactType:
class ContactType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('telephone', TextType::class);
$builder->add('fax', TextType::class, array(
'required' => false));
$builder->add('email', TextType::class);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'CommonBundle\Entity\Contact',
));
}
}
然后,
客户:
namespace CommonBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use CommonBundle\Entity\Information;
/**
* Client
*
* @ORM\Table(name="client")
* @ORM\Entity(repositoryClass="CommonBundle\Repository\ClientRepository")
*/
class Client
{
/**
* @ORM\OneToMany(targetEntity="CommonBundle\Entity\Information", mappedBy="client")
*/
public $informations;
/**
* @ORM\OneToMany(targetEntity="CommonBundle\Entity\Contact", mappedBy="client")
*/
public $contacts;
/**
* Constructor
*/
public function __construct()
{
$this->informations = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
* Add information
*
* @param \CommonBundle\Entity\Information $information
*
* @return Client
*/
public function addInformation(\CommonBundle\Entity\Information $information)
{
$this->informations[] = $information;
return $this;
}
/**
* Remove information
*
* @param \CommonBundle\Entity\Information $information
*/
public function removeInformation(\CommonBundle\Entity\Information $information)
{
$this->informations->removeElement($information);
}
/**
* Get informations
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getInformations()
{
return $this->informations;
}
/**
* Add contact
*
* @param \CommonBundle\Entity\Contact $contact
*
* @return Client
*/
public function addContact(\CommonBundle\Entity\Contact $contact)
{
$this->contacts[] = $contact;
return $this;
}
/**
* Remove contact
*
* @param \CommonBundle\Entity\Contact $contact
*/
public function removeContact(\CommonBundle\Entity\Contact $contact)
{
$this->contacts->removeElement($contact);
}
/**
* Get contacts
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getContacts()
{
return $this->contacts;
}
}
信息:
namespace CommonBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use CommonBundle\Entity\Client;
/**
* Information
*
* @ORM\Table(name="information")
* @ORM\Entity(repositoryClass="CommonBundle\Repository\InformationRepository")
*/
class Information
{
/**
* @ORM\ManyToOne(targetEntity="CommonBundle\Entity\Client", inversedBy="informations")
* @ORM\JoinColumn(nullable=false)
*/
public $client;
/**
* Set client
*
* @param \CommonBundle\Entity\Client $client
*
* @return Information
*/
public function setClient(\CommonBundle\Entity\Client $client)
{
$this->client = $client;
return $this;
}
/**
* Get client
*
* @return \CommonBundle\Entity\Client
*/
public function getClient()
{
return $this->client;
}
}
而且联系人:
namespace CommonBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Contact
*
* @ORM\Table(name="contact")
* @ORM\Entity(repositoryClass="CommonBundle\Repository\ContactRepository")
*/
class Contact
{
/**
* @ORM\ManyToOne(targetEntity="CommonBundle\Entity\Client", inversedBy="contacts")
* @ORM\JoinColumn(nullable=true)
*/
public $client;
/**
* Set client
*
* @param \CommonBundle\Entity\Client $client
*
* @return Contact
*/
public function setClient(\CommonBundle\Entity\Client$client = null)
{
$this->client = $client;
return $this;
}
/**
* Get client
*
* @return \CommonBundle\Entity\Client
*/
public function getClient()
{
return $this->client;
}
}