Call to undefined method App\Model\Prikazy::getSession()

stickybit
Člen | 14
+
0
-

Dobrý den, pokud pracuji se session v presenteru, tak vše funguje v pořádku, ale jakmile dám naprosto shodný kód se session do modelu, tak dostávám chybu Call to undefined method App\Model\Prikazy::getSession(). Nevíte prosím kde je chyba? Děkuji

namespace App\Model;

use Nette;
use Nette\Security\User;
use Nette\Utils\DateTime;
use Nette\Http\Session;
use Nette\Application\UI\Form;

class Prikazy
{
		use Nette\SmartObject;

		private $database;

	    public function __construct(Nette\Database\Context $database)
	    {
	          $this->database = $database;
	    }
		.....
		$arr[] = [
		....
    	'tab' => $this->getSession('tabRow')->row,
		....
		];

		$session = $this->getSession();
		$sessionSection = $session->getSection('tabRow');
.....
Ondřej Kubíček
Člen | 494
+
+3
-

odkud myslíš, že se ta getSession metoda bere? protože tvuj presenter dědí od nette ui presenteru kde metoda getSession je, kdyby sis to proklik tak hned víš
ve své třídě si to musíš předat přes constructor

public function __construct(Nette\Database\Context $database, Nette\Http\Session $session)
       {
           $this->database = $database;
			$this->session = $session
       }

Editoval Ondřej Kubíček (27. 7. 2018 20:39)

stickybit
Člen | 14
+
0
-

Díky, popravdě jsem ale i tuhle variantu dávno zkoušel a situace je pořád stejná, nechápu to. Nemůžu ještě někde jinde dělat něco blbě? Upraveno takto:

private $database;

public $session;

public function __construct(Nette\Database\Context $database, Nette\Http\Session $session)
{
        $this->database = $database;
     	$this->session  = $session;
}

Díky za nějaké nasměrování.

uestla
Backer | 799
+
+1
-

Nejspíše stále používáš metodu getSession(), ale nemáš ji nadefinovanou – ani nemusíš.

Stačí přistupovat přímo k $this->session.