Vlastní prvek formuláře složený z dalších prvků
- Firest
- Člen | 12
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 | 1195
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
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?