Nepřekreslení snippetu na select boxu

Johny12369
Člen | 21
+
0
-

Zdravím, mám podobný problém jako zde:
https://forum.nette.org/…luje-snippet
po změně výběru v select boxu překresluji obsah jiného select boxu, akorát se mi snippet neaktualizuje.

Latte soubor

<form class="df-checkout">
	...

	<select n:href="getHraci!" name="domaci" id="domaci" class="form-control">
		<option value="">Vybrat</option>
		<option n:foreach="$tymy as $tym" value="{$tym->getId()}">
			{$tym->getNazev()}
		</option>
	</select>

	...

	<div class="row helpers hidden">
		<select n:snippet="hraciDomaci" class="form-goly-domaci-select form-control">
			<option></option>
			<option n:foreach="$hraciDomaci as $hrac" value="{$hrac->getId()}">
				{$hrac->getPrijmeni()} {$hrac->getJmeno()}
			</option>
		</select>

		<input type="text" class="form-goly-input form-control">
	</div>
</form>

JS soubor

<script>
$(document).ready(function(){

    $("#domaci").bind('change', function() {
		var link = $(this).attr("href");

		$.nette.ajax ({
			url: link,
			data: {"strana": "domaci", "tymId": $(this).val()},
			type: 'get',
			dataType:'json'
		});
    });

});
</script>

Controller

<?php
public function handleGetHraci($strana, $tymId)
{
	$tym = $this->tymManager->getTymRepository()->find($tymId);
	$muzstvo = $this->tymManager->getMuzstvoRepository()->findBy(["nazev" => self::HLAVNI_TYM]);
	$hraci = $this->hracManager->getHracRepository()
				->findBy(["tym" => $tym, "muzstvo" => $muzstvo], ["prijmeni" => "ASC", "jmeno" => "ASC"]);

	if($this->isAjax()){
		$this->template->hraciDomaci = $hraci;

		$this->redrawControl('hraciDomaci');
	}
?>

Formulář zatím nemám vytvořený a zpracovaný, takže první select box mám udělaný takto provizorně a select box se snippetem je na formuláři nezávislý. Ten využívám ke kopírování.
JS zavolá handler správně a když si dumpnu $this->template->hraciDomaci před redrawControl tak tam data jsou, ale redrawControl pak už neudělá nic, přitom se na stránce ve spodní Tracy liště přidá nový řádek s tímto procesem.
Chybu mi to nevyhazuje, v debuggeru má proces (zapasy-new?do=getHraci&strana=domaci&tymId=12) status 200, akorát response obsahuje:

{"state":[],"snippets":{"snippet--hraciDomaci":"\t\t\t\t\t\t\t\t\t\t<option></option>\n"}}

a po tomto procesu se mi ještě vytvoří další proces zapasy-new?_tracy_bar=content-ajax.070337af20&XDEBUG_SESSION_STOP=1&v=0.09143314314688511 s response:

Tracy.Debug.loadAjax(...)

Zkoušel jsem místo $.nette.ajax použít i $.get, obalit <form> do snippetArea a tento kód mám normálně v {block content}, takže by ani snippetArea neměla být potřeba. nette.ajax.js s inicializací předem $.nette.init(); mám taky.

Díky moc za jakoukoliv radu.

Editoval Johny12369 (5. 9. 2018 14:29)

Johny12369
Člen | 21
+
0
-

Odpovím si sám, byl problém v tom, že jsem si tu danou proměnnou, která se updatovala snippetem, setoval v render* metodě na prázdné pole (abych při úvodním načtení stránky nemusel řešit existenci proměnné).