Ни свойство "dispositif", ни один из методов - PullRequest
0 голосов
/ 03 июля 2019

В контроллере я создаю форму:

$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(),
]);

1 Ответ

0 голосов
/ 03 июля 2019

В вашей сущности вы должны определить свои геттеры и сеттеры. Ваш класс сущностей является закрытым, поэтому вы должны определить общедоступные методы получения и установки для доступа к закрытым объектам.

https://symfony.com/doc/current/doctrine.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...