Trying to get property of non-object in

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
mordare
Začátečník | 117
+
0
-

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)

mkoubik
Člen | 728
+
0
-

No a co je v proměnné $page? Objekt to asi nebude ;-)

mordare
Začátečník | 117
+
0
-

do proměnné $page se načte řádek z tabulky a já chci vypsat jen tu část kde je kód stránky tedy část se jménem „content“

westrem
Člen | 398
+
0
-

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:

  1. zakomentuj si zatial tieto veci v sablone nech ti nesposobuju chyby a
  2. 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:

  1. zadaj vystizne nazov threadu (napr: Problem s premennou v sablone, chyba: Trying to get property of non-object ..)
  2. poriadne rozpis o aky problem sa jedna, co robis v aplikacii kym k nemu dojde a pripadne popis konfiguraciu
  3. 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
+
0
-

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
+
0
-

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
+
0
-

sakra blby fetch() XD když mi to začalo házet tu prvni chybu tak sem ho skusil vymazat a už sem ho tam nedopsal Díky

mordare
Začátečník | 117
+
0
-

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

redhead
Člen | 1313
+
0
-

fetch() vrací jeden řádek. Mělo by být nejspíš fetchAll()

mordare
Začátečník | 117
+
0
-

jo bylo to ono díky moc