Lze ovlivnit render signálem?

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

Zdravím,

Jsem dneska trochu mimo, a trápím se s jednou, nejspíš triviální záležitostí. Narážím asi na základní nedostatky znalostí nette a objektového php ale do středy musím mít hotovou první verzi maturitní práce, tak moc nemám čas se teď vracet k základům.

Mám jednoduchý kvíz, který je celý obsluhován javascriptem jen na konci asynchronně odesílám výsledek na server. Výsledek posílám pomocí signálu. Přes signál umím výsledek hodit do DB, ale už neumím zpět do snippetu vyhodit výsledek… handle se přecijen volá až po renderu. Tak trochu nevím jak na to.

Jan Tvrdík
Nette guru | 2595
+
0
-

Můžu tě ujistit, že handle se volá před renderem :)

Under
Člen | 23
+
0
-

Aha, tak v tom případě nechápu proč mi to nefunguje. Mám:

<?php
 public function handleSubmit($right_answer_count)
    {
      $this->template->result = $right_answer_count;
      $this->invalidateControl("result");

    }
?>

Funkce se úspěšně zavolá, ale parametr je nulový, což by neměl být:)
Odesílání requestu mám takto:

<script type="text/javascript">
  if(last){
    var route = "/web/vocab/test/default-<?php echo $ws_id ?>?fulltest-id%5Bright_answer_count%5D="+right_answer_count+"&do=fulltest-submit";
    $.get(route);
  }
</script>

je to trochu prasárna, protože jsem nenašel způsob jak odeslat obsah js proměnné přes link(). Byl bych vděčný za jakýkoliv lepší, funkční způsob, díky:)

Ot@s
Backer | 476
+
0
-

Under napsal(a):
je to trochu prasárna, protože jsem nenašel způsob jak odeslat obsah js proměnné přes link(). Byl bych vděčný za jakýkoliv lepší, funkční způsob, díky:)

Pokud máš JS přímo v latté šabloně presenteru/komponenty, tak

<script type="text/javascript">
  if(last){
    $.get({link Submit!, right_answer_count=>$right_answer_count});
  }
</script>

Ovšem co je v $ws_id, netuším :-)

Under
Člen | 23
+
0
-

Ot@s napsal(a):

Under napsal(a):
je to trochu prasárna, protože jsem nenašel způsob jak odeslat obsah js proměnné přes link(). Byl bych vděčný za jakýkoliv lepší, funkční způsob, díky:)

Pokud máš JS přímo v latté šabloně presenteru/komponenty, tak

<script type="text/javascript">
  if(last){
    $.get({link Submit!, right_answer_count=>$right_answer_count});
  }
</script>

Ovšem co je v $ws_id, netuším :-)

Takhle se mi ale přiřadí do parametru right_answer_count php proměnná $right_answer_count ne? já potřebuji odeslat obsah JS proměnné right_answer_count

Editoval Under (28. 2. 2012 17:25)

uestla
Backer | 799
+
0
-

EDIT: $.getJSON() místo $.get(), bacha na Vlacha!

<script type="text/javascript">
$.getJSON({link submit!}, { // getJSON !!!
	'right_answer_count': right_answer_count
});
</script>

OT: do středy včetně?

Editoval uestla (28. 2. 2012 17:51)

Under
Člen | 23
+
0
-

Zkusil jsem ten getJSON, ale parametr right_answer_count je pořád prázdný.

OT: do středy včetně?

Do středy(aha, ono je to vlastně zítra :D) do cca 4. hodiny odpoledne:). Když to jinak nepůjde, tak se na ajax vykašlu a výsledek kvízu bude po refreshi:)

--

Elijen
Člen | 171
+
0
-

Nepřepisuješ v té komponentě constructor a nezapoměl jsi zavolat parent::__construct()?

Under
Člen | 23
+
0
-

Elijen napsal(a):

Nepřepisuješ v té komponentě constructor a nezapoměl jsi zavolat parent::__construct()?

Ne:) Mám tam jen render() a handleSubmit()