D8: entity form, #ajax callback + validálás

lonalore képe

Hello,

Lenne egy drupal 8-as gondom, remélem tudtok segíteni. Van egy modulom, amiben van egy saját, bundle nélküli entity type-om, a Membership. A probléma ott van, hogy ha az entity-hez tartozó form-on egy elemre (currency) rárakok egy #ajax callback-et (annyi dolga lenne, hogy a kiválasztott currency szerint átír egy szöveget, vagyis a szövegben lecseréli a currency-t a kiválasztottra):

https://gist.github.com/lonalore/2a304f89a8cee7e977cbb6100f486949#file-m...

... akkor működik is a dolog, de a validálás valamiért lefut. Nyilván azért mert kihagytam valamit, vagy nem is csinálom jól a dolgokat, nem tudom.

Az egyéni validálásaim itt vannak:
https://gist.github.com/lonalore/2a304f89a8cee7e977cbb6100f486949#file-m...

és alatta pedig ott az ajax callback metódus, ami átírja a currency-t a kiválasztottra:
https://gist.github.com/lonalore/2a304f89a8cee7e977cbb6100f486949#file-m...

Ha kitöltöm a formon a szükséges mezőket, akkor nincs gond, lefut az ajax, és cseréli szépen a szöveget (vagyis a form elemet), de ha üresen van hagyva legalább 1 kötelező mező, akkor a validálás bekavar az ajax-nak.

Találkozott már valaki hasonlóval?

Itt van a repo, ha valakinek könnyebb úgy, hogy látja is működés közben:
https://www.drupal.org/node/2297439/git-instructions/8.x-2.x

A form-ról itt egy képernyőkép:
https://gist.github.com/lonalore/2a304f89a8cee7e977cbb6100f486949#gistco...
(tehát van az Amount-hoz tartozó currency dropdown list, ha változik, akkor a Trial period-nál lévő currency is változna)

A segítséget előre is köszönöm! Címet nem tudtam jobbat kitalálni, nevezzétek át nyugodtan. :)

Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 
lonalore képe

Közben kiagyaltam egy működő megoldást, mégpedig:

  1. $submitted = $form_state->isSubmitted();

Ezzel tudom vizsgálni a validálásomnál hogy ténylegesen el lett-e küldve a form, vagy csak ajax hívás történt. Így a validálás nem szakítja meg az ajax hívást.

Ha valakinek van szebb megoldása, javaslata, azt azért szívesen veszem. Köszönöm! :)

0
0