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)