Wpis z mikrobloga

#symfony2
Mam encje A, B, C oraz Trio. W encji Trio przechowuję relację ManyToOne do A, B i C. Chciałem zrobić custom field w którym wybieram A, B i C a otrzymuję Trio (lub błąd że takie Trio nie istnieje).

TrioType.php

public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('A', 'entity', [
'class' => 'Entity\A',
...
$builder->add('B', 'entity', [
'class' => 'Entity\B',
...
$builder->add('C', 'entity', [
'class' => 'Entity\C’,
...
$builder->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event)
{
$form = $event->getForm();
$data = $event->getData();
$trio = $this->trioRepo->getByData($data['A'], $data['B'], $data['C']);
$event->setData($trio ? $trio : false); // jeśli nie ustawię false tylko null to nic nie usuwa
if (!$trio)
$form->addError(new FormError(’Trio does not exist'));
});
}
Problem jest taki, że po wysłaniu dostaję błąd z walidatora Symfony na początku formularza, „Ta wartość jest nieprawidłowa.” („This value is not valid.”). Normalnie w $data siedzi tablica z id encji A, B i C (następnie byłaby przemieniona na obiekty A B i C), a ja w tym momencie nadpisuje ją wyjętym z bazy obiektem Trio. Ten Trio później jest poprawnie przekazywany do encji którą edytuję, tylko jeszcze ten błąd walidacji...
Domyślam się że mu to nie pasuje ta nowa struktura i stąd błąd. Już próbowałem wyłączać walidację w TrioType i nic nie zmieniało. Ale wyłączenie walidacji w Type w którym wykorzystuję tego custom fielda ignoruje ten błąd - ale nie chcę mieć wyłączonej walidacji na całym formularzu.

#symfony #php #webdev
  • 3