Snippety – Ajax vrací při překreslení nulu
- mara11
- Člen | 42
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>
- mara11
- Člen | 42
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
Jo uz chapu – prejmenuj parametr $id
v handle metode. Ty
parametry jsou sdilene pro cely presenter, takze to prepise ten hlavni