Dynamické prvky ve formuláři
- lukendo
- Člen | 96
Ahoj, četl jsem tu všechny podobné příspěvky křížem krážem ale stále jsem nemohl najít řešení, jak při použití replikátoru ve FormFactory přesměrovávat na kotvu. Od této myšlenky jsem později ustoupil a snažím se přidávat prvky přes handle akci (což zase nevím jak se pořádně dělá a jestli to je best practices). Kdo se setkal s něčím podobným tak budu rád za jeho náměty na řešení. Děkuji
- PetrHH
- Člen | 49
Potřeboval jsem formulář, kde by si uživatel libovolně přidával a mazal pole. Zkusil jsem kde co a nakonec skončil u JavaScriptu. Prostě přidám položku, název pole bude vždy např. pocetKusu[]. Ty hranaté závorky jsou tam důležité. Data doluju pomocí
<?php
$pocetKusu = $form->getHttpData($form::DATA_TEXT, 'pocetKusu[]');
?>
Zatím spokojenost :-).
Editoval PetrHH (21. 2. 2017 16:27)
- akadlec
- Člen | 1326
Záleží jaká pole chceš přidávat. Pokud chceš jen duplikovat
pole/více polí, tak pak se ti k tomu hodí form replikátor kde si
nadefinuješ která pole, resp. kontejner se má replikovat.
Pokud by to mělo být složitější tak pak to řešit přes JS a pak
přistupovat k raw datům postu formuláře.
- fizzy
- Backer | 49
mne sa osvedcilo riesit zlozitejsie formulare v js pomocou https://vuejs.org – ziadne jquery klonovacie peklo, dobre sa to udrzuje a upravuje :)
- lukendo
- Člen | 96
PetrHH napsal(a):
Potřeboval jsem formulář, kde by si uživatel libovolně přidával a mazal pole. Zkusil jsem kde co a nakonec skončil u JavaScriptu. Prostě přidám položku, název pole bude vždy např. pocetKusu[]. Ty hranaté závorky jsou tam důležité. Data doluju pomocí
<?php $pocetKusu = $form->getHttpData($form::DATA_TEXT, 'pocetKusu[]'); ?>
Zatím spokojenost :-).
Dostal jsem tomu že mám možnost zadat libovolný počet emailů, takže to řeším zmiňovaným způsobem. Nicméně je nutno ozančit jedno to pole za primární, tudíž si tam generuju (přes append funkci) i radio button se stejným jménem, a value mu dávám počet fieldů v containeru $(‚.container‘).length nicméně mi vrací pořád počet 1
Edit:
při nalejvání vodky, jsem na to přišel :D
var n = 1;
$('#addMail').click(function(){
n = n +1;
$('.mails').append('<div class="fields"><div class="twelve wide field"><label for="mails[]"></label><input type="text" name="mails[]" placeholder="e-mailová adresa"></div><div class="four wide field"><input type="radio" value='+ n +' name="primaryMails"></div></div>');
});
$('#removeMail').click(function(){
$('.mails').children().last().remove();
n = n - 1;
});
Editoval lukendo (3. 3. 2017 22:50)
- PetrHH
- Člen | 49
johnnie napsal(a):
ked to riesite sposobom ako pise @PetrHH , ako validujete tie prvky ? tam si musim napisat nejako zvlast valdiaciu pripadne netteForms.js ? ->setRequired(); asi fungovat nebude
Validaci si dělám ručně v javascriptu. Přidávám řádky faktury, takže se stejně musím starat o různé výpočty, dodělat validaci nebyl problém.