návod na modely – začátečník
- kall_ell
- Člen | 13
Ahoj všem, chtěl bych se zeptat kde najdu nějaký popis nebo článek, jak fungují moduly. Vytvořit presenter, jsem již zvládnul, šablonu taky, ale v quick startu se mluví o modulech, které se ukládají do složky app/models/ ale zatím tam o tom není moc psáno. V příručce programátora je psáno jak na moduly, ale tento čánek tam také ještě není.
- kall_ell
- Člen | 13
tohle mám na mysli https://doc.nette.org/cs/quickstart
je tam psáno o modelu, ale není tam napsáno, kam ho mám uložit ani jak ho
propojím s presenterem. Nějak to nechápu.
- Etch
- Člen | 403
Ještě uvedu příklad jednoduchého modelu.
class NewsModel extends Object implements INewsModel{
public function getNews(){
return dibi::query("SELECT * FROM [news]")->fetchAll();
}
public function getNew($id){
return dibi::query("SELECT * FROM [news] WHERE [id] = %i", $id)->fetch();
}
}
v presenteru se pak použije
$model = new NewsModel();
$this->template->items = $model->getNews();
// nebo
$this->template->items = $model->getNew($id);
model se vlastně stará o zpracování dat a předává je presenteru.
Výhoda je v tom, že pokud potřebuji změnit práci s daty (třeba přechod
na jinou DB struktůru) stačí, aby se vyměnil model za jiný který
implementuje rozhraní INewsModel
. Tedy stačí pouze změnit
model, ale do presenteru nebude třeba zasahovat.
- kall_ell
- Člen | 13
Zkouším si ten příklad v QS a vyhazje mě to následující chybu:
Cannot assign to an undeclared property TodolistPresenter::$todoManager.
Line 15: public function getModel() {
Line 16: if(!isset($this->todoManager))
Line 17: $this->todoManager = new TodoManager;
Line 18: return $this->todoManager;
Co je to za chybu? Červeně je označen řádek 17. model TodoManager mám vytvořený a uložený ve složce /app/models/TodoManagerModel.php.