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
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 :)
- Oli
- Člen | 1215
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');