В контроллере я создаю форму:
$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 ()" не существуют и не имеют открытого доступа в классе "Учение \ 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, добавляю поле "dispositif", полученное из сущности EgwDispositif (которая существует) и возвращаемую сообщение:
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"
Так что это не проблема аргумента EM, передаваемого в форме EgwProjetSearchType: Symfony говорит, что «сущность не существует» ....
Мне не нужно передавать EwgDispositif ?? Это был не случай в Symfony 2: у меня было:
$formProjetSearch = $this->createForm(new EgwProjetSearchType($this-
getDoctrine () -> getManager ()));
И это больше не работает в 3.4.
Поэтому я изменил код:
$formProjetSearch = $this->createForm(EgwProjetSearchType::class, $em, [
'em' => $this->getDoctrine()->getManager(),
]);