handle a vykreslovanie ajxom

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

Ahojte viete mi poradit, neviem ako to mam riesit…

mam constructor ktoremu presam selection model:

public function __construct(Selection $tasksListTable,$taskId)
{
  parent::__construct($tasksListTable);
  $this->taskId = $taskId;
  $this->tasksListTable = $tasksListTable->get($this->taskId);
}

potom mam handle v ktorom menim hodnotu pola v tejto tabulke:

public function handleStartTask($taskId)
{
  $this->tasksListTable->update(array('status_id' => 2));

  if ($this->presenter->isAjax()) {
    $this->getParent()->invalidateControl('taskDetail');
  } else {
      $this->presenter->redirect('this');
  }
}

a nakoniec mam render kde posielam tabulku sablone:

public function render()
{
    $this->template->setFile(__DIR__ . '/taskDetail.latte');
    $this->template->tasksListTable = $this->tasksListTable;
    $this->template->render();
}

problem je v tom ze ked spustim handle nie ajaxovo poziadavka je ok,
ale ked poziadavka na handle ide ajaxovo tak sa handle vykona , ale pri znovuvykresleni snippetu sa neprevavi zmena.
neviete mi poradit ako to vyriesit?

moj odhad je ze najprv v constructore vyberiem zaznam podla id, a vykreslim, ked spustim handle, ten sa vykona a urovi redirect a znovu sa v constructore vyberie zaznam a vykresli.

pri ajaxovom volani to asi tak neprebehne… ci?
viete mi poradit?

Felix
Nette Core | 1190
+
0
-

A napriklad ve Firebugu ten ajax request vidis, ze probehne? Mas spravne nastaveny script Ajax s jQuery nebo nette.ajax.js?

Ot@s
Backer | 476
+
0
-

Po konstruktoru je sice v $this->tasksListTable ActiveRow, ale když nahlédneš do update(), tak se s ActiveRow nepracuje. U verze bez ajaxu je to OK, protože dojde k reloadu stránky (a znovunačení záznamu v konstruktoru). Ověř si to podle:

public function handleStartTask($taskId)
{
  $this->tasksListTable->update(array('status_id' => 2));

  if ($this->presenter->isAjax()) {
    $this->tasksListTable = $tasksListTable->get($this->taskId); // "refresh" po update
    $this->getParent()->invalidateControl('taskDetail');
  } else {
      $this->presenter->redirect('this');
  }
}