在控制器中,我创建一个表单:
$em = $this->getDoctrine()->getManager();
$formProjetSearch = $this->createForm(EgwProjetSearchType::class, $em, [
'em' => $this->getDoctrine()->getManager(),
]);
在我的EgwProjetSearchType中,我有:
$builder->add('dispositif', 'entity', array(
'class' => 'LeaPrestaBundle:EgwDispositif',
'property' => 'nomDispositif',
'label' => 'nomDispositif',
'required' => true,
'empty_value' => '',
'query_builder' => function(EntityRepository $er)
{
return $er->createQueryBuilder('d')
->where('d.isActive = :isActive')
->setParameter('isActive', 1)
->orderBy('d.nomDispositif','ASC');
},
));
我有这个错误:
属性“ dispositif”或方法“ getDispositif()”,“ dispositif()”,“ isDispositif()”,“ hasDispositif()”,“ __ get()”都不存在并且在类中具有公共访问权限“ Doctrine \ ORM \ EntityManager”。
尽管如此,该实体仍然存在:
<?php
namespace Lea\PrestaBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
/**
* Lea\PrestaBundle\Entity\EgwDispositif
*
* @ORM\Table(name="egw_dispositif")
* @ORM\Entity
*/
class EgwDispositif
{
/**
* @var integer $idDispositif
*
* @ORM\Column(name="id_dispositif", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $idDispositif;
/**
* @ORM\ManyToOne(targetEntity="EgwTypePrestation", inversedBy="dispositifs")
* @ORM\JoinColumn(name="id_type_prestation", referencedColumnName="id")
*/
private $idTypePrestation;
ETC ...
感谢您的帮助!
请为您的消息打个招呼,但是,我只想在列表框中以实体的形式显示:我使用类型EgwProjetSearchType,我添加了一个来自实体EgwDispositif(存在)的字段“ dispositif”,并返回消息是:
Neither the property "dispositif" nor one of the methods
"getDispositif()", "dispositif()", "isDispositif()", "hasDispositif()",
"__get()" exis``t and have public access in class
"Doctrine\ORM\EntityManager"
所以这不是以EgwProjetSearchType形式传递的参数EM的问题:Symfony说“该实体不存在”。...
我不必通过EwgDispositif?不是Symfony 2中的cas:我有:
$formProjetSearch = $this->createForm(new EgwProjetSearchType($this-
getDoctrine()-> getManager()));
这在3.4中不再起作用。 所以我更改了代码:
$formProjetSearch = $this->createForm(EgwProjetSearchType::class, $em, [
'em' => $this->getDoctrine()->getManager(),
]);
答案 0 :(得分:0)
在您的实体中,您需要定义您的获取器和设置器。您的实体类是私有的,因此您必须定义公共获取器和设置器才能访问私有对象。