ajax – volání handle metody

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

Ahoj, mám problém. V latte šabloně mám select s ID kategorie, kdy při změně kategorie chci změnit obsah snippetu, který na stránce mám. Snippet obsahuje data z proměnné $teams. Problém je, že se mi ani ta metoda handleChangeCathegory() nezavolá.

<script type="text/javascript">
<!--
$('#kategorie').on('change', function() {
    $.nette.ajax({
        type: 'GET',
        url: '{link changeCathegory!}',
        data: {
            'kategorie': $('#kategorie').val(),
        }
    });
});
-->
</script>
<?php
public function handleChangeCathegory($kategorie) {
        if ($this->isAjax()) {
            $this->template->teams = $this->teams->getTable(array('kategorie' => $kategorie), 'startovni_cislo');
            $this->invalidateControl('kategorie');
        } else {
            $this->redirect('default');
        }
    }
?>

V renderDefault mám:

<?php
public function renderDefault() {
        if (!isset($this->template->teams))
            $this->template->teams = $this->teams->getTable(array('kategorie' => 'muzi'), 'startovni_cislo');
}
?>

Děkuji za všechny rady :)

raketoplan2005
Člen | 147
+
0
-

Nemáš tam i v reálu značky pro HTML komentáře?

<!--
-->
Oli
Člen | 1215
+
0
-

raketoplan2005 napsal(a):

Nemáš tam i v reálu značky pro HTML komentáře?

<!--
-->

to by nemelo vadit. Pokud se nepletu, tak to driv slouzilo jako ochrana pred IE, ktery js neumel a vypsal kod do html. Dneska myslim zcela zbytecne, ale melo by to byt funkcni

raketoplan2005
Člen | 147
+
0
-

Oli: Aha, tak to se omlouvám, to jsem nevěděl.

semz5
Člen | 9
+
0
-

Nebo byste mi, prosím, mohli poradit nějaké funkční řešení, pomocí něhož pošlu hodnotu ze select boxu do handle metody a podle toho se proměnná v šabloně naplní jinými daty a poté se aktualizuje snippet, ve kterém je tabulka s daty z proměnné. Děkuji.

Oli
Člen | 1215
+
0
-

Ja to používám takhle:

// latte:
$.ajax({
	type: "POST",
	url: {link changeCathegory!},
	data: { kategorie: $('#kategorie').val() }
});

// presenter:
function __construct($httpRequest)
{
	$this->httpRequest = $httpRequest;
}

public function handleChangeCathegory($kategorie) {
        if ($this->isAjax()) {
	    $httpRequest = $this->httpRequest;
            $this->template->teams = $this->teams->getTable(array('kategorie' => $httpRequest->getPost('kategorie')), 'startovni_cislo');
            $this->invalidateControl('kategorie');
        } else {
            $this->redirect('default');
        }
    }

Jestli chceš použít get tak místo $httpRequest->getPost('kategorie') použij $httpRequest->getQuery('kategorie');