Snippety – Ajax vrací při překreslení nulu

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

Mám jednoduchý výpis dvou proměnných, při kliknutí na první odkaz se přičte číslo první položky (insert záznamu do db, dané číslo je count záznamů), při kliknutí na druhý se přičte číslo druhé položky.

Problém:
kliknu na první odkaz, vše funguje, vše je v pořádku, je překreslen daný snippet…
kliknu na druhý odkaz a ty čísla se mi překreslí na nulu…

Kliknutí na první odkaz:

snippets: {snippet--score1: " 194<br>↵ 115<br>↵"}
state: []

Kliknutí na druhý odkaz:

snippets: {snippet--score1: " 0<br>↵ 0<br>↵"}
state: []

Presenter:

	private $first_subject;
private $second_subject;
private $isVoted;
private $challengeItem;

public function handleScore1($id) {
    $this->reviewModel->insertScore($this->user->getId(), $id);
    $this->isVoted = true;
    if ($this->isAjax()) {
        $this->redrawControl('score1');
    }
}

public function renderDefault($id) {
    $this->challengeItem = $this->reviewModel->getOneChallenge($id);
        if (!$this->challengeItem) {
            $this->error('Challenge was not found.');
        }

    $this->template->challenge = $this->challengeItem;
    $first_id = $this->challengeItem['challenge']['subject_id1'];
    $second_id = $this->challengeItem['challenge']['subject_id2'];
    $this->first_subject = $this->reviewModel->getSubjectScore($first_id);
    $this->second_subject = $this->reviewModel->getSubjectScore($second_id);
//    var_dump($this->second_subject['count']);

    $this->template->first_id = $first_id;
    $this->template->second_id = $second_id;
    $this->template->first_subject = $this->first_subject;
    $this->template->second_subject = $this->second_subject;
}

Latte:

	{snippet score1}
   {$first_subject['count']}<br>
   {$second_subject['count']}<br>
{/snippet}
{snippet score2}
{/snippet}
<a n:href="score1! 1" class="ajax">Change first variable!</a>
<a n:href="score1! 2" class="ajax">Change second variable!</a>
David Matějka
Moderator | 6445
+
0
-

Tohle nevypada na chybu se snippetama, ale s tvoji modelovou vrstvou

mara11
Člen | 42
+
0
-

Máš pravdu, chyba je jinde… Dal jsem pryč ajax, insert se provede správně.

Kliknutí na první odkaz:
default/1?do=score1

Vygeneruje se tenhle dotaz

SELECT *
FROM `challenge`
WHERE (`id`='1')

Na druhý odkaz:
default/2?do=score1

Vygeneruje se tenhle dotaz

SELECT *
FROM `challenge`
WHERE (`id`='2')

Já bych potřeboval, aby se mi vygeneroval vždy ten první, protože do url zadám /default/1, vytáhne se challenge z databáze s id 1 a pak na základě toho idčka tahám další věci. Handle metody mají jenom insertovat, nechci aby měnily v url id toho challenge.
Protože pak kliknu na druhej odkaz a udělá se: default/2?do=score1… najednou je to challenge s id 2, a z databáze se tahaj věci pro id 2, který jsem tam žádný neměl, proto se zobrazila nula

David Matějka
Moderator | 6445
+
0
-

Jo uz chapu – prejmenuj parametr $id v handle metode. Ty parametry jsou sdilene pro cely presenter, takze to prepise ten hlavni

mara11
Člen | 42
+
0
-

Díky funguje, moc mi to pomohlo! :-)