Session v modelech – Creating default object from empty value
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Jarek92
- Člen | 91
Zdravím Vás,
mým cílem je rozchodit session v aplikaci tak, abych měl v modelu předka, který vytvoří k session přístup a jeho potomci si pak mohou u sebe už jen tvořit sekce a pracovat s nimi (v různých metodách je nastavovat, mazat atd…)
Zatím mám:
abstract class Base extends Nette\Object
{
/** @var Nette\Database\Connection */
protected $connection;
/** @var Nette\DI\Container */
protected $container;
public function __construct(Nette\Database\Connection $connection, Nette\DI\Container $container)
{
$this->connection = $connection;
$this->container = $container;
}
}
class Potomek extends Base
/** @var Nette\Http\Session */
private $session;
private $sekce1;
public function __construct(Nette\Database\Connection $connection, Nette\DI\Container $container, Nette\Http\Session $session)
{
parent::__construct($connection, $container);
$this->session = $container->getByType('Nette\Http\Session');
$this->sekce1 = $this->session->getSection('sekce1');
}
public function metoda1($parametr){
$sekce1->promenna1 = $parametr;
}
Jenže to mi po zavolání „metoda1“ vyhodí Warning: Creating default
object from empty value na řádku „$sekce1->promenna1 = $parametr“.
Jak správně pracovat se session v modelech?
Editoval Jarek92 (27. 12. 2014 9:58)
- trejjam
- Backer | 65
Nevím jestli to je překlep, ale tohle v PHP fungovat nebude:
private $sekce1;
public function metoda1($parametr){
$sekce1->promenna1 = $parametr;
}
Zkus to takhle, potom bude fungovat i původní myšlenka s vytvořením sekce v konstruktoru:
class base {
protected $session;
public function __construct(Nette\Http\Session $session) {
$this->session = $session;
}
}
class child extends base {
private $sekce1;
public function __construct(Nette\Http\Session $session) {
parent::__construct($session);
$this->sekce1 = $this->session->getSection('sekce1');
}
public function metoda1($parametr){
$this->sekce1->promenna1 = $parametr;
}
}