Mam encje i w niej pole:

  1. /**
  2.   * @ORM\ManyToOne(targetEntity="Category", fetch="EAGER")
  3.   * @ORM\JoinColumn(name="category_id", referencedColumnName="id", nullable=true)
  4.   */
  5. protected $category;


Formularz dla tego pola:

  1. ->add('category', null, array(
  2. 'label' => 'Kategoria'
  3. ))


Pojawiaja się <select> z Kategoriami i pusta opcja, wszystko dobrze działa, ale gdy już ustawimy jakąś Kategorię, To potem nie da się już tej Kategorii usunąć dając na pustą <option>, po przeładowaniu dalej pozostaje kategria wcześniej ustawiona.

Ponieważ w evencie PRE_SUBMIT

  1. $data = $event->getData();
  2. $data['category'] //string '' (length=0)


kategoria jest pustym stringiem wiec dodalem fix.

  1. $builder->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) {
  2. $data = $event->getData();
  3. if ($data['category'] == '')
  4. $data['category'] = null;
  5. $event->setData($data);
  6. });


Ale to powinno działać dobrze bez tego fixu, jakiejś opcji zapomniałem skonfigurować czy to jest bug w sf2 ?



Mój fix, który wczoraj napisałem okazał się złudzeniem, dalej nie działało. Nie tu był problem.

Okazało się, że usunięcie fetch="EAGER" z kody poniżej pomogło.

  1. /**
  2.   * @ORM\ManyToOne(targetEntity="Category", fetch="EAGER")
  3.   * @ORM\JoinColumn(name="category_id", referencedColumnName="id", nullable=true)
  4.   */
  5. protected $category;


Tylko co ma piernik do wiatraka