Premenna v template neobashuje to na co je nastavena v presenteri

- Vultour
 - Člen | 4
 
Najviac ma na tomto zarazo to, ze to zacalo robit zrazu bez toho aby som nieco menil.
Takze k problemu:
Mam presenter, v nom je funkcia ktora taha data z databaze a dava ich do
premennej v template. Vyzera priblizne takto:
public function renderPage($param1){
  $data = $this->model->getData($param1);
  if ($data === false){ $this->redirect("Homepage:default"); }
  else{
    $this->template->data = $data;
  }
}
Template:
<html><head></head><body>
  <h1>{$data->title}</h1>
  <h2>{$data->subtitle}</h2>
</body></html>
Problem je v tom ze v premennej $data v template je nieco uplne ine ako
bolo vytiahnute funkciou getData(). Nie je tam junk, su tam validne data, avsak
pre uplne iny vstup ako je $param1.
Ak dam print_r($this->template->data) v presenteri, tak je tam to co ma
byt, avsak v template je tam zrazu nieco ine.
Cache som mazal, nepomohlo.
Robil to iba jeden view, ten som zmazal a nahral znovu. Teraz to robia 2 ine, ktore su v 2 roznych presenteroch
Editoval Vultour (23. 7. 2014 17:46)

- Vultour
 - Člen | 4
 
To nepomoze, getData vyzera nejak takto:
public function getData($param){
  $stmt = $this->database->prepare("SELECT * FROM table WHERE param = :param LIMIT 1");
  $stmt->execute(array(":param" => $param));
  $result = $stmt->fetch();
  if ($result === false){ return false; }
  $output = new stdClass();
  $output->rowI = $result["row_i"];
  $output->rowII = $result["row_ii"];
  $output->rowIII = $result["row_iii"];
  return $output;
}
				
- Vultour
 - Člen | 4
 
Este jedna vec co som si teraz vsimol, ak zmenim
$this-template->data = $this->model->getData($param1)
na
$this->template->anotherData = $this->model->getData($param1),
a v sablone $data na $anotherData tak vsetko funguje. Ak vsak v sablone dam
{print_r($data)}, tak je to stale plne nespravnych dat! Je mozne ze sa to plni
niekde inde ako v render/actionPage() a constructore?
Editoval Vultour (23. 7. 2014 18:06)

- Pavel Macháň
 - Člen | 282
 
Vultour napsal(a):
Este jedna vec co som si teraz vsimol, ak zmenim
$this-template->data = $this->model->getData($param1)
na
$this->template->anotherData = $this->model->getData($param1),
a v sablone $data na $anotherData tak vsetko funguje. Ak vsak v sablone dam {print_r($data)}, tak je to stale plne nespravnych dat! Je mozne ze sa to plni niekde inde ako v render/actionPage() a constructore?
a nepřepíšeš si někde jinde v kódu $this-template->data ?

- Vultour
 - Člen | 4
 
Pavel Macháň napsal(a):
Vultour napsal(a):
Este jedna vec co som si teraz vsimol, ak zmenim
$this-template->data = $this->model->getData($param1)
na
$this->template->anotherData = $this->model->getData($param1),
a v sablone $data na $anotherData tak vsetko funguje. Ak vsak v sablone dam {print_r($data)}, tak je to stale plne nespravnych dat! Je mozne ze sa to plni niekde inde ako v render/actionPage() a constructore?a nepřepíšeš si někde jinde v kódu $this-template->data ?
Pozrel som model a vsetky presentery. Nikde o $data a $this->template->data uz neni ani zmienka, v template vsak stale existuje aj ked vymazem cache. wtf
Editoval Vultour (23. 7. 2014 18:24)

- Pavel Macháň
 - Člen | 282
 
Vultour napsal(a):
Pavel Macháň napsal(a):
a nepřepíšeš si někde jinde v kódu $this-template->data ?
Pozrel som model a vsetky presentery. Nikde o $data a $this->template->data uz neni ani zmienka, v template vsak stale existuje aj ked vymazem cache. wtf
Někde to budeš mít prostě zapomenuté (BasePresenter atd…)

- JakubJarabica
 - Gold Partner | 184
 
Neprepíšeš naozaj nikde v šablóne(napr. v @layoute) premennú
$data? Napr. tým, že ju použiješ ako
premennú({foreach $whatever as $data}).