Ajax získání hodnoty ze select boxu

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

Potřebuji poradit. Mám následující funkcionalitu: ve formuláři kliknu na select box a vyberu hodnotu, pomocí ajaxu se šáhne do databáze a vytáhnou se data dle vybrané položky v select boxu a data se následně zobrazí ve formuláři pod select boxem. Vycházel jsem z článku Dependent form select with AJAX a v zásadě to funguje. Až na jeden podstatný detail: v proměnné $value nemám k dispozici hodnotu ze select boxu. Nevíte, kde by mohla být chybka?

.control.php

public function handleCheckPlaces($value){
	// výcuc dat z databáze zde nemám implementováno, zatím mě zajímá ta hodnota $value
	// ...
	$this->template->places = '$value = '. $value;
	$this->invalidateControl('places');
}

.latte

{form addDate}
    {label id_place /} {input id_place}
    {snippet places}
		{if isset($places)}
		<div>{$places}</div>
		{/if}
	{/snippet}
	{input send}
{/form}

<script>
	{include #jsCallback, input => id_place, link => checkPlaces}
</script>

{define #jsCallback}
	$('#{$control["addDate"][$input]->htmlId}').on('change', function() {
		$.nette.ajax({
			type: 'GET',
			url: '{link {$link}!}',
			data: {
				'value': $(this).val()
			}
		});
	});
{/define}

Ve firebugu asi vše v pořádku:
Parametry
do: matches-1158-checkPlaces
value: 2

Nevíte, kde dělám chybu? Díky díky.

David Matějka
Moderator | 6445
+
+1
-

Parametry pro komponenty museji mit ve svem nazvu celou cestu, tedy vcetne nazvu komponenty – v tvem pripade matches-1158-value. pouze value bude dostupne jako parametr v presenteru. Pro vytvoreni toho nazvu muzes pouzit funkci getParameterId

flamengo
Člen | 135
+
0
-

V latte jsme v javascriptu přejmenoval název proměnné, původní kód:

data: {
	'value': $(this).val()
}

jsem nahradil následujícím:

data: {
	'{$control->getParameterId('value')}': $(this).val()
}

a nyní funguje. V metodě handleCheckPlaces($value) mám hodnotu obsaženou ve $value, takže super a díky moc!

Asi jsem měl uvést, že celé to je komponenta, která je v presenteru vkládaná pomocí multiplieru, v šabloně asi takto {control matches-$item->id}.
Ještě jednou díky.

Editoval flamengo (17. 9. 2015 15:01)