Aktywne Wpisy

GangKobry +311
Sosy podane w brudnym kartonie po jajkach to nie problem dla p0lki jeśli podadzą je tak w Hiszpanii.
#p0lka #logikarozowychpaskow #podroze #gotujzwykopem #heheszki #hiszpania
#p0lka #logikarozowychpaskow #podroze #gotujzwykopem #heheszki #hiszpania
źródło: temp_file1756962080155344516
Pobierz
Kyuz6 +73





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 usuwaif (!$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
FormEvents::PRE_SUBMITWg diagramu na tej stronie: http://symfony.com/doc/current/components/form/form_events.html wcześniej jest jeszcze
FormEvents::PRE_SET_DATAi chyba tam się powinno wywoływać setData.źródło: comment_qTFmS6RRJ05ehI0uq7Q0CsWiMbVJXh90.jpg
Pobierz