gpt4 book ai didi

symfony - 传递给选择字段的实体必须被管理

转载 作者:行者123 更新时间:2023-12-01 23:18:36 24 4
gpt4 key购买 nike

我从网上搜索了答案,但我找不到原因:我有一个表公司,一个表 companyType,所以:

/**
* Acme\UserBundle\Entity\Company
*
* @ORM\Table(name="company")
* @ORM\Entity
*/
class Company
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var CompanyType
*
* @ORM\ManyToOne(targetEntity="CompanyType")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="company_type_id", referencedColumnName="id")
* })
*/
private $companyType;
...

/**
* Acme\UserBundle\Entity\CompanyType
*
* @ORM\Table(name="company_type")
* @ORM\Entity
*/
class CompanyType
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string $name
*
* @ORM\Column(name="name", type="string", length=45, nullable=true)
*/
private $name;
....
public function __toString(){
return $this->name;
}


然后,在 formtype 类中:

class CompanyForm extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('name')
->add('siren')
->add('siret')
->add('tvaCommun')
->add('apeCode')
;
$builder->add('activity','collection', array('type'=> new ActivityForm()));
$builder->add('companyType','entity',array(
'class' => 'AcmeUserBundle:CompanyType',
));
}
...
}

当我尝试使用表单时:

   {{ form_row(company.companyType)  }}  

在 View 中,我收到了错误消息。

最佳答案

我找到了原因,因为我在 company 中为表单创建了一个 companyType 实例。这意味着:

$cType=new CompanyType();
$company=new Company();
$company->getCompanyTypes()->add($cType);
$cForm=$this->createFrom(new CompanyForm(),$company);

这就是它抛出这个异常的原因。我不应该为表单初始化任何 companyType。因为我需要选择它。
感谢谁试图提供帮助。希望这可以帮助某人。

关于symfony - 传递给选择字段的实体必须被管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10478341/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com