Závislost selektu na jiném selektu
- Webster.K
- Člen | 213
Zdravím všechny, řeším problém s načtením dat z jednoho selectboxu
na základě druhého, jde o značky/modely aut, potřebuju vybrat značku a
podle toho vyfiltrovat model, vše mám hotovo, nehází to nikde chybu ani nic
jiného, ale nefunguje tak jak ma… Vycházel jsem z tohoto: https://blog.nette.org/…-and-pure-js
Vše udělal jako v tom, nicméně na konci je kus kodu sablony:
{define content}
{snippetArea wrapper}
{form selectForm}
{label first /} {input first}
{snippet secondSnippet}
{label second /} {input second}
{/snippet}
{input send}
{/form}
{/snippetArea}
{include jsCallback, input => first, link => firstChange}
{/define}
{define jsCallback}
<script>
$('#' + {$control["selectForm"][$input]->htmlId}).on('change', function() {
$.nette.ajax({
type: 'GET',
url: {link {$link}!},
data: {
'value': $(this).val(),
}
});
});
</script>
{/define}
Bohužel blok jsCallback se mi nikam nevlozi, ve zdrojovym kodu vubec neni a netusim bohuzel, co s tim vubec udelat, aby se tam vlozil, resp aby se vlozil spravne, tusi nekdo jak tento priklad rozchodit?
- jarda256
- Člen | 130
Ahoj, tohle tedy není úplně rada k tvé otázce, ale pokud by ses chtěl vyhnout tomu, že musíš formulář manuálně vykreslit a zabývat se redrawControl, tak můžeš přes composer nainstalovat https://github.com/…/en/index.md a pohodlně využívat továrničky na formuláře
- kejlicz
- Člen | 201
Nedávno jsem to tu taky rozebíral. Koukni sem https://forum.nette.org/…ariable-form .
- Webster.K
- Člen | 213
Vyřešil jsem to a funguje to, teda, skoro, ten jeden wrapper co byl v příkladu jsem dal pryc, takže preklesleni začalo najednou fungovat ok, ještě tam teda byla jedna drobnost s 500 chybou co se tyce URL :D :D :D ale když odešlu formulář, aktualizuje se stránka ale nic se neodešle… neodesílá se přes ajax, nemá to odesílat přes ajax, což je v pořádku, ale nekde neco nefunguje, protože se evidetně vubec nezpracuje ta metoda po odeslani a ta predtim fungovala :/
- Webster.K
- Člen | 213
Mam takový tušení že za to možná může:
{var $_form = $form = $presenter['newCarForm']}
Bez tohodle to hodí chybu ze neexistuje $_form… ale mam pocit ze si tim prepisu systemovou promenou a proto se nic neodesle :/ nicmene snippetareu se mi nepovedlo rozchodit :/ Nekdo nejaky napad?
- Webster.K
- Člen | 213
Tak jsem zjistil, že když odešlu formulář, aniž bych měnil prvky co jsou snippetem prekresleny, odešle se to v pořádku… jakmile jednou jedinkrat to překreslim, sice se to odesle ale nezpracuje se to, vubec se nezavola ta funkce :/
Evidentně problém bude v tom, že když při vytvoření formuláře jsou nějaký data a při odeslání jsou jiný, vrací to NULL…
Editoval Webster.K (19. 12. 2016 14:53)
- Webster.K
- Člen | 213
V souvislosti s tímto tématem jsem narazil ještě na jeden problém, pokud budu mít závislost jednoho selectboxu, který překreslí ten za ním (tato fáze je rozchozena a funkcni), jak pak docílim aby i tento vyvolal další akci na prekreslení? Jaksi kdyz jej prekreslim, prestava fungovat :/