Vlastní prvek formuláře složený z dalších prvků

Firest
Člen | 12
+
0
-

Zdravím,

posledních pár dní se potýkám s problémem ohledně vytvoření vlastního prvku formuláře. Mým cílem je vytvořit vlastní prvek (Address) pro zadání adresy, který bude složený z dalších podprvků (TextInput pro město, ulici, gps atd.) a který bude mít upravené renderování. Můj současný stav je takový, že jsem si vytvořil třídu rozšiřující BaseControl a v ní vytvářím TextInput prvky. Následně v getControl třídy Address projdu všechny vytvořené prvky a vytáhnu si jejich controlPrototype a ten následně přilepím k výslednému HTML. Problém je v tom, že nejsem schopen následně vytáhnout hodnoty všech prvků dohromady a vrátit je jako výstup prvku Address. Další problém je v tom, že potřebuji všem prvkům nastavit pravidla (např. Form::EQUAL), když je však nastavím parent prvku a pak je chci pro každý prvek duplikovat (vytáhnu si je přes getRules() a pak je znovu nastavím přes addRule()), nic se neděje. Neexistuje nějaké elegantnější řešení? Předem díky!

Editoval Firest (18. 9. 2020 15:43)

Pavel Kravčík
Člen | 1183
+
0
-

Na začátku s Nette jsem taky něco takového zkoušel, sice se povedlo ale uživatelsky to žádný zázrak nebyl. Doporučím spíš rozčlenit na menší komponenty a volat je separátně, např:

  • Modal + ajax
  • Wizard form (krokový formulář)
Firest
Člen | 12
+
0
-

Díky za odpověď, bohužel se tímto prvkem snažím nahradit jiný už existující (který jsem nepsal já) a mým cílem je, aby bylo pokud možno stejné API a já pak jen přehodil extensionMethod. Nakonec jsem skončil u toho, že jsem si vytvořil prvek custom Container (kdy jsem přidal nějaké metody původního API, aby se to chovalo stejně) a už mi funguje víceméně vše kromě přidávání pravidel (respektive addCondition a addConditionOn). Neřešil tu někdo podobný problém – replikaci těchto podmínek a na nich navázaných pravidel?