načtení modelu do presenteru
- Taps
- Člen | 168
Mohl by mi někdo poradit jak správně načítat model do presenteru
v souboru VypisyModel.php mám níže uvedené
class VypisyModel
{
public static function insert($data)
{
return dibi::query('INSERT INTO [vypisy]', $data);
}
}
do presenteru jsem zkoušel model načítat tímto způsobem
public function newTasklistFormSubmitted(Form $form)
{
$data = $form->getValues();
$data['nazev'] = $data->title;
** $mod = new VypisyModel;
$this->data = $mod->insert($data);**
$this->flashMessage('Seznam úkolů založen.', 'success');
$this->redirect('this');
}
zkoušel jsem i zápis
VypisyModel::insert($data);
ale vždy se mi zobrazí jen chyba Class ‚VypisyModel‘ not found
- hAssassin
- Člen | 293
kdyz uz tu metodu mas statickou tak ji i staticky volej, ne? takto:
** // $mod = new VypisyModel; <- tohle zakomentuj
$this->data = VypisyModel::insert($data); // <- sem pridej staticky volani **
EDIT: sorry, umrlec to uz vlastne psal, sem si nevsim :-[
Editoval hAssassin (23. 3. 2012 12:27)
- Tomáš Votruba
- Moderator | 1114
Jestli mohu doporučit, využil bych možnosti DI a čerstvého návodu pro načítání modelu. Jde cool jít s dobou :)
- bojovyletoun
- Člen | 667
Velký rozdíl. Služba vytvořená pomocí services je sdílená, tzn.
služba (např. objekt Texy) se jednou vytvoří a pak se k ní přistupuje
pomocí $container->sluzba
a vrací vždy ten samý
objekt. Když je služba definovaná v factories, tak se ke službě
přistupuje pomocí $conteiner->createSluzba()
a jak název
napovídá, vytváří se vždy nová instance.
V souvislosti s Nette\Database: Vetšinou jako služby se definují rovnou Selection, je důležité vědět, že volání metod (např where) na ní způsobí, že i původní objekt se mění. Více zde. Kdyby byly tabulky byly definovány jako sdílené, tak by mohlo přinést divné chování…
Zde jsem psal o tom, jak by taková konfigurace mohla vypadat: