Propojeni modelu a presenteru : Undefined variable: posts

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
safik
Člen | 11
+
0
-

Zdravím, mám model:

<?php
namespace App\Model;

use Nette,
	Nette\Utils\Strings,
	Nette\Security\Passwords;

class MorpheusModel extends Nette\Object
{
   private $db=null;

   public function __construct(Nette\Database\Context $database){
       $this->db=$database;
   }

   public function getNotices(){
       return $this->db->table('posts')->limit(5)->order("created_at DESC");
        }
   }
?>

presenter:

<?php

namespace App\Presenters;

use Nette,
	App\Model;


/**
 * Homepage presenter.
 */
class MorpheusPresenter extends BasePresenter
{
	public function renderDefault()
	{
        $this->template->posts = $this->database->getNotices();
	}

} ;
?>

a kod

{block content}

<div id="banner">
	<h1 n:block=title>Notices</h1>
</div>

<div id="content">

    <table>
        {foreach $posts as $notice}
            <tr><td>{$notice->title}</td></tr>
			atd....
        {/foreach}
    </table>

</div>\--

a pořád mě to vypisuje Undefined variable: posts. Kde mám chybu? Děkuji.
wassy
Člen | 46
+
0
-

možná blbý dotaz, ale máš v tom presenteru injectnutý nebo jinak předaný ten model?

safik
Člen | 11
+
0
-

Teď jsem si všiml, že jsem sem dal jinou verzi presenteru.
je to

<?php

namespace App\Presenters;

use Nette,
	App\Model;


/**
 * Homepage presenter.
 */
class MorpheusPresenter extends BasePresenter
{
    private $model=null;

    private function getModel(){
        if(!isset($this->model)){
            $this->model= new Model\MorpheusModel($this->context->getService("database"));
        }
        return $this->model;
    }
	public function renderDefault()
	{       $this->getModel();
        $this->template->posts = $this->getModel()->getNotices();
	}

}

to je celý presenter

David Matějka
Moderator | 6445
+
0
-

A jaky presenter a jakou akci nette spousti? (vidis to v tracy routing panelu)

wassy
Člen | 46
+
0
-

co v presenteru udělá dump($this->getModel()->getNoticies()); ? Není tam náhodou NULL ?

David Kudera
Člen | 455
+
0
-

wassy napsal(a):

co v presenteru udělá dump($this->getModel()->getNoticies()); ? Není tam náhodou NULL ?

I kdyby byl null, tak to přece nehodí „undefined variable posts“

wassy
Člen | 46
+
0
-

David Kudera napsal(a):

wassy napsal(a):

co v presenteru udělá dump($this->getModel()->getNoticies()); ? Není tam náhodou NULL ?

I kdyby byl null, tak to přece nehodí „undefined variable posts“

pravda pravda… :D

safik
Člen | 11
+
0
-

Tak jsem zjistil, že chyba je jinde. Když jsem vše z MorpehusPresenter hodil do HomepagePresenteru tak to fungovalo. Co mám udělat aby to jelo i když to je v tom mém presenteru?

David Kudera
Člen | 455
+
0
-

safik napsal(a):

Tak jsem zjistil, že chyba je jinde. Když jsem vše z MorpehusPresenter hodil do HomepagePresenteru tak to fungovalo. Co mám udělat aby to jelo i když to je v tom mém presenteru?

Přesně proto se tě @DavidMatějka ptal na spuštěnou akci ;-)