Závislost selektu na jiném selektu

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Webster.K
Člen | 213
+
0
-

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
+
0
-

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

Webster.K
Člen | 213
+
0
-

Tohle řešení je určitě zajímavý :) nicméně jak jsem to jen zrychlene zkouknul, v případě zrovna aut, bych se dostal do sileny konstrukce if/elseif/else :D a to by bylo uplne sileny :D kazdopadne na par ifu se to rozhodne hodi, dekuju :)

CZechBoY
Člen | 3608
+
0
-

@Webster.K nebo můžeš použít databázi a použít where klauzuli… Přece nemusíš mít vše v několika polích.

Webster.K
Člen | 213
+
0
-

To sice ne, ale přecijen rád bych dal dohromady to řešení co jsme našel :) než přidávat další addon :)

kejlicz
Člen | 201
+
0
-

Nedávno jsem to tu taky rozebíral. Koukni sem https://forum.nette.org/…ariable-form .

Webster.K
Člen | 213
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

Tak jsem to nakonec vyřešil tak, že při vytváření formuláře jsem do druhého prvku natáhl uplně všechny možnosti, které mohou existovat, rázem to začalo fungovat, jen snipet to vyfiltruje :)

Webster.K
Člen | 213
+
0
-

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 :/