Trying to get property of non-object in
- mordare
- Začátečník | 117
Ahoj lidi proím moc o pomoc dal sem si do databáse HTML kód stránek a
když si ho načtu vše (asi) OK ale když se ho pokusím vypsat hodí mi to
hlášku
Notice: Trying to get property of non-object in C:\ComplexWebServer\http_docs\ddm\app\temp\c-Nette.Template\_9ff7c78f487116fc8062deb1b7e605c2.Show.phtml.php on line 12
ten řádek v souboru ze složky temp je echo $page->content ;
a stejný řádek přímo v šabloně {!$page->content}
PS: zkoušel sem mazat i temp
Editoval mordare (8. 10. 2010 23:44)
- westrem
- Člen | 398
Chybova hlaska jasne naznacuje, ze v premennej $page
nemas
objekt, teda nemozes pouzit syntax s ->
.
Bohuzial neuvadzas (rada do buducna, ak chces problem vyriesit v dost
rychlom case, napis vsetko relevantne) ako ziskavas obsah
premennej $page
. Je to pomocou dibi? Alebo mas iny sposob
komunikacie s DB, ak ano, aky? Alebo $page
nie je nieco co
ziskavas z DB ale objekt, ktory vytvaras rucne a doplnas donho veci z DB?
Z tvojho popisu teda nebude mudry ziaden Nette guru a uz vobec nie
ziadny guru :)
Moj quick & dirty tip:
- zakomentuj si zatial tieto veci v sablone nech ti nesposobuju chyby a
- na mieste kde vytvoris premennu
$page
zavolaj:
dump($page);
a pozri si co sa vypise a eventuelne to sem postni spolu s rozumym popisom.
PS: nemysli si, ze ludia tu na fore ti nechcu pomoct, prave naopak, radi pomahame, ale radi pomahame ludom, ktori zaroven dokazu zrozumitelne spisat ich problem. Proste nabuduce ked zalozis nejaky thread kde ziadas pomoc tak:
- zadaj vystizne nazov threadu (napr: Problem s premennou v sablone, chyba: Trying to get property of non-object ..)
- poriadne rozpis o aky problem sa jedna, co robis v aplikacii kym k nemu dojde a pripadne popis konfiguraciu
- vzdy uved aj verziu Nette (pripadne dibi a inych knihoviem) ktoru pouzivas
Uvidis, ze sa nam bude hned lepsie odpovedat a aj ty vyriesis svoj problem rychlejsie :)
- mordare
- Začátečník | 117
ok diky za radu takže tedy znova. Pro komunikaci s DB používám dibi.
Promněnnou vytvářím v prezenteru a potedo ni
nahraju($page = $model->findPage($id);
) to co mi pošle model
který pomocí dibi přistupuje k databazi (vytahne z DB jeden řádek pomocí
kódu return dibi::query("SELECT * FROM pages WHERE id=%i", $id);
)
když mi model vrátí to co chci odešlu to do template
($this->template->page = $pages;
) po té v template chci
vypsat promněnnou ({!$page->content}
) a tam mi to hodilo chybu.
Ano teď jak sem znovu vypsoval kód všimnul jsem si toho že při odesílání
odesílám $pages
a né $page
tedy to byla chyba ale
teď když jsem to zkusil spustit tak mám uplně jiný problém. a to
Cannot read an undeclared property DibiResult::$content.
obrázek
laděnky je TADY
- westrem
- Člen | 398
No vidis!
Super, teraz je problem uz jasny a riesenie jednoduche. Ty volas iba metodu
query, ktora ale nevrcia hned vysledok ale objekt DibiResult
. Pre
pristup k objektu musis pouzit este metody fetch()
.
Pre viac info a ukazku si pozri dokumentaciu pripadne vyuzi priamo metodi dibi::fetch()
- mordare
- Začátečník | 117
nazdar lidi ta chyba co sem tu puvodne psal tak se tehdy nejakym zpusobem
vyresila sama ALE ted tu mam ten problem znovu
Trying to get prperty of non.....
a nevim kde je chyba. tento krat
mi to ale hodilo chybu když sem chtel vytvorit vypisovani novimek z databaze.
Tabulka ma tvar id|news
tedy nic sloziteho. Ukazky toho kodu jsou
tady JO a když necham vypsat $news->news
mimo ten cyklus
tak to fungje. Diky