Globální proměnná v modelu
- wb2009
- Člen | 125
Díky, ale to můj problém neřeší, proměnných je více…
Resp. jo řeší, ale chtěl bych ty proměnné využívat i v presenteru,
Ideální řešení pro mne by bylo, jako mám teď this->context->parameter[promena] tak nějak přistoupit pro ní v modelu :)
Edit: něco mne ovšem napadlo,…vyzkouším…
Editoval wb2009 (2. 7. 2013 12:42)
- Glottis
- Člen | 129
vytahnuti ale nejakych parametru pres context v base presenteru kdyz to tam potrebuju snad zas takovy problem neni ne?
abstract class BasePresenter extends Nette\Application\UI\Presenter
{
protected $settings;
protected function startup() {
$this->settings = $this->context->parameters['app'];
- wb2009
- Člen | 125
Glottis
asi tě nechápu, ale psal jsem, že v presenteru to problém není, ba to
takhle i používám stejně jako ty.
Problém je, že to potřebuji vytáhnout i v modelu…
Edit:
Jiří Nápravník
když je to bad practise, tak nám napiš best practise, tohle mám hrozně moc rád, když někdo něco napíše, že je špatně, ale dobré řešení nenapíše…
Editoval wb2009 (2. 7. 2013 14:28)
- vitkutny
- Člen | 73
proč to neuděláš tak jak píše besanek? vždyť nemusíš předávat proměnou ale klidně celé pole proměnných
parameters:
polePromennych:
promena: 'a'
dalsiPromena: 'b'
model pridat do services
services:
model: Cesta\K\Modelu(%polePromennych%)
v modelu takto predas a v presenteru muzes udelat to stejne nebo i pres kontext
pubf __construct($polePromennych){
dump($polePromennych);
}
Editoval vitkutny (2. 7. 2013 14:28)
- kuzma88
- Člen | 15
Nic ti nebraní si udělat třídu
class FooBarSettings implements IFooBarSettings
{
public function __construct($param1, $param2){
...
}
public function getParam1(){
...
}
public function getParam2(){
...
}
// atd.
}
nebo
class FooBarSettings implements IFooBarSettings
{
public function setParam1($param1){
...
}
public function getParam1(){
...
}
public function getParam2(){
...
}
public function setParam2($param2){
...
}
// atd.
}
services:
fooBarSettings: FooBarSettings (%mojePromenna%)
nebo
services:
fooBarSettings:
class: FooBarSettings
setup:
- setParam1(%mojePromenna%)
- setParam2(%mojePromenna2%)
a pak můžeš to vstříknout jak do modelu, tak do presenteru. Nějaké nastavení by asi nebylo zas takové zlo, ale rozhodně bych takhle neschovával závislosti na nějaké jiné služby.
- kuzma88
- Člen | 15
wb2009 napsal(a):
Glottis
asi tě nechápu, ale psal jsem, že v presenteru to problém není, ba to takhle i používám stejně jako ty.
Problém je, že to potřebuji vytáhnout i v modelu…Edit:
Jiří Nápravníkkdyž je to bad practise, tak nám napiš best practise, tohle mám hrozně moc rád, když někdo něco napíše, že je špatně, ale dobré řešení nenapíše…
Obecně používaní $this->context (service locator) je problematické v tom, že nelze z API určit použité závislosti, jelikož přes context můžeš použít cokoliv co je v containeru a problematicky se na to pak píši testy.
- Jiří Nápravník
- Člen | 710
Edit:
Jiří Nápravníkkdyž je to bad practise, tak nám napiš best practise, tohle mám hrozně moc rád, když někdo něco napíše, že je špatně, ale dobré řešení nenapíše…
Tak snad nema smysl psat lepsi reseni a opakovat se, kdyz ti ho napsal besanek nade mnou, ze mas injectnout si promennou, pricemz ta promenna uz logicky muze byt jak primitivni datovy typ, tak pole, tak klidne trida (coz pisu i lide pode mnou)