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}
).