У меня есть эта форма с отношением manyTomany, отлично работающим следующим образом:
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('manifestations', 'entity', array(
'class' => 'PrifProtocoleBundle:Manifestation',
'multiple' => true,
'expanded' => false,
'property' => 'libelle',
'empty_value' => 'Choississez',
'required' => false,));
}
но я хочу установить для параметра «несколько» значение «ложь», таким образом, у меня просто есть поле выбора с опцией «Выбор», поэтому, когда я нажимаю на него, отображаются все остальные значения. К сожалению, я получаю сообщение об ошибке: ни один из методов _set()" или "_call()" не существует и не имеет общего доступа в классе. Я искал некоторые решения в Интернете и пробовал Вот этот:
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('manifestations', 'collection', array(
'type' => 'entity',
'options' => array(
'class' => 'AcmeProtoBundle:Manifestation',
'multiple' => false,
'expanded' => false,
'property' => 'libelle',
'empty_value' => 'Choisissez',
'required' => false,)));
}
у меня нет сообщения об ошибке! но форма выбора не отображается, даже когда я устанавливаю для параметра «несколько» значение «истина», у меня есть только кнопка отправки, при нажатии на которую отображаются результаты, поэтому я думаю, что я что-то пропустил в параметрах для отображения формы!
кто-нибудь может помочь? Спасибо
Манифестация.php
/**
* @ORM\Entity
* @ORM\Entity(repositoryClass="ManifestationRepository")
*/
Проявление класса {
public function __construct() {
$this->dateCreation = new \DateTime;
$this->dateModif = new \DateTime;
}
public function __toString() {
return $this->getLibelle();
}
/**
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Id
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="integer")
* @Assert\GreaterThan(
* value = 0,
* message = "La valeur doit être positive"
* )
*/
private $numOrdre;
/**
* @ORM\Column(type="string",length=50)
* @Assert\Length(
* min = "5",
* minMessage = "Le libellé doit faire au moins {{ limit }} caractères"
* )
*/
private $libelle;
/**
* @ORM\Column(type="datetime")
*/
private $dateCreation;
/**
* @ORM\Column(type="datetime")
*/
private $dateModif;
/**
* @ORM\Column(type="boolean")
* @Assert\NotBlank( message=" ")
*/
private $etat;
//getters and setters
инвайт.php
/**
* @ORM\Entity
* @ORM\Entity(repositoryClass="InviteRepository")
*
*/
класс Пригласить {
/**
* @var boolean
*
* @ORM\ManyToMany(targetEntity="Acme\ProtoBundle\Entity\Manifestation", cascade={"persist"})
* @Assert\NotBlank(message=" ")
*/
private $manifestations;