Předání ajaxového parametru komponentě
- Mariocz
- Člen | 52
Zdravim, chtěl jsem si trochu zkrášlit kód a vyčlenit rezervační
kalendář z prezenteru a šablony do samostatné komponenty.
Ve chvíli kdy jsem vše přesunul do nově vytvořené komponenty a tu pak
vložil na správné místo mi ale přestalo fungovat ajaxové překreslovaní
kalendáře. Konkrétně se xhr požadavek zavolá ale parametr do handleru
nedorazí, resp. proměnná má hodnotu null takže se to zasekne uvnitř
handleru.
xhr url (v parametru hodnota 5/2013)
http://localhost/janovickyNette/www/homepage/rezervace?do=clientRezervation-monthChanged&key=5%2F2013
template komponenty
<div class="rezervation-combobox">
<p>
{form selectForm}
{input months}
{/form}
</p>
</div>
<p>
{snippet snipCalendar}
{!$calendar}
{/snippet}
</p>
<script>
$("select.ajax").live("change", function(e) {
e.preventDefault();
var value = $(this).val();
$.get({link monthChanged!}, { key: value });
});
</script>
Handler
public function handleMonthChanged($key) {
$data = explode("/", $key);
$this->month = (int) $data[0];
$this->year = (int) $data[1];
$calendar =new Calendar($this->month, $this->year, $this->db);
$this->template->calendar = $calendar->getHtmlCalendar();
$this->invalidateControl('snipCalendar');
}
- Ot@s
- Backer | 476
Mariocz napsal(a):
link generuju v šabloně komponenty v javascriptu (události vyvolané při změně checkboxu)
kód je uvedený v úvodní příspěvku. Mohl by jsi mi prosím poradit jak to upravit aby to šlapalo? Když bylo tohle přímo v šabloně presenteru, fungovalo to jak mělo.
{ key: value }
musí být
{ 'clientRezervation-key': value }
, tj. do šablony komponenty si
přidej $template->name = $this->name
a v JS šablony uprav
řádek $.get({link monthChanged!}, { {$name}-key: value });
.
- Ot@s
- Backer | 476
Mariocz napsal(a):
Teď jsem to moc nepochopil. Když změním JS tak jak jsi napsal s proměnnou $name, xhr se vůbec nepošle.
Naopak když řádek vyměním za tohle:{ key: value } musí být { ‚clientRezervation-key‘: value } xhr se provede úspěšně ale neinvaliduje se snippet.
Ten handler je špatný (k reklamaci invalidace). Myslel jsem, že Ti to
dojde. To samé s „xhr se vůbec nepošle“ (případnou chybu JS snad
odhalíš a opravíš). Chtěl jsem, aby Ti došlo, proč parametr
key
v presenteru funguje a v komponentě ne…