Ajax prekresleni komponenty ve snippetu
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- kreed
- Člen | 13
Ahoj, no nevim jestli uz se tu neresilo, nebo jestli to nechapu spatne, ale nenachazim reseni…
Problem: Mam Komponentu CreditTable, ktere predam data a vykreslim ve spod stranky… Nad tabulkou mam Malicky formular, ktery obsahuje select a ted chci aby se na akci onchange toho selectu znovu nacetla tabulka, kterou generuje komponenta.
- Nechapu co vsechno je nutne aby se mi spustil ajax v nette, udelal jsem priklad, ten mi jel, ale to bylo na kliknuti a tady je to onchange… pak jestli je nebo neni nutny $.nette.init(), nekde se o tom mluvi, nekde ne, tak su z toho jalovej…
- Napisu si handleOnchangeSelect().. ten by se mel volat po akci Onchange toho selectu, ale jak poslu data do te komponenty mi neni jasny
- Kod:
Vsechny klihovny jako jquery.min.js, jquery.ajax.js jsou includovany
<?php
//Presenter
public function createComponentAddCreditForm() {
$form = new UI\Form();
//bla bla formular a dalsi prvky
$form->addSelect('type', 'Typ: ', $types)->getControlPrototype()->setClass('ajax');
//bla bla validace
return $form;
}
public function createComponentCreditTable() {
$table = new \komponent\tables();
//bla bla sazim nastaveni sazim data
return $table
}
public function handleOnchangeSelect($credit_type) {
if($this->isAjax()) {
//no a tady nevim co s tim, prekleslim promenou $foo a to je tak vsechno
}
}
?>
a v sablone stranky mam:
<script>
$(function(){
//kdyby nahodou
$.nette.init();
//reakce na zmenu selectu
$('input.ajax').change(function() {
$.get(this.value);
});
});
</script>
//dal pak v sablone
{control addCreditForm}
{snippet creditTable}
{control creditTable}
{/snippet}
A ted nevim co dal
- Vojtěch Dobeš
- Gold Partner | 1316
Ad javascriptovou stránku věci:
Co se týče inicializace, nevím, co kdo kde píše, ale dokumentace mluví jasně :).
$.nette.init();
$('input.ajax').change(function () {
$.nette.ajax({
url: this.value
});
});