Jak správně připojit Model do Presenteru v Nette 2.1

- kastanekdavid
- Člen | 39
–NoobAlert– :)
Zdravím,
doposud jsem Model v Presenteru připojoval v každé metodě zvlášť do lokální proměnné pomocí:
$this->getService('nazevServiceZConfigNEON')
V Nette 2.1 je ovšem toto DEPRECATED a je nutné přejít na použití:
$this->getContext()->getService('nazevServiceZConfigNEON')
V komentářích changelogu jsem se ale dočetl, že ani toto není úplně košér způsob.
Ještě mě napadá využití metody injectNejakouSluzbu(), ale
nevím, zda je to ten nejlepší způsob. Různě jsem hledal, ale nikde jsem se
nedočetl, co je jednoznačně validní způsob (který alespoň nebude
v následujících verzích deprecated).
Víte někdo, jaký způsob je nejlepší? :)
Editoval kastanekdavid (6. 1. 2014 16:12)

- David Matějka
- Moderator | 6445
inject* metody nebo @inject anotace
/**
* @inject
* @var \Foo\Bar
*/
public $foo;
nebo
protected $foo;
public function injectFoo(\Foo\Bar $foo)
{
$this->foo = $foo;
}
Editoval matej21 (6. 1. 2014 22:41)

- kastanekdavid
- Člen | 39
matej21 napsal(a):
inject* metody nebo @inject anotace
/** * @inject * @var \Foo\Bar */ public $foo; //nebo protected $foo; public function injectFoo(\Foo\Bar $foo) { $this->foo = $foo; }
Díky! :)
Ten druhý způsob funguje pěkně.
Ten první stajl asi bez namespaces nerozchodím, že? Jako takto:
/**
* @inject
* @var calendarModel
*/
private $model;
public function renderNew(){
$model = $this->model;
$model->test();
}
V config.neon mám:
services:
calendarModel: CalendarModel

- David Matějka
- Moderator | 6445
asi to bude case sensitive – CalendarModel (neni dulezity nazev sluzby, ale typ sluzby)