jak vytahnu konfiguraci z config.neon v komponente
- ondraondra81
- Člen | 82
Ahoj,
můžete mě někdo nasměrovat jak se dostat ke konfiguraci v konfigu
z componenty (extends UI\Control)
potrebuji neco jako
mycomponent:
images: %wwwDir%/images
photos: %wwwDir%/photos
hadam že to bude cca takto
$this->getPresenter()->contex-> a tady co?
- David Matějka
- Moderator | 6445
Spravne reseni je registrovat tovarnu na komponentu jako sluzbu a parametry predat z neonu, viz doc
- Felix
- Nette Core | 1247
Hadas spatne (resp. takhle by to slo, ale je to blbe).
Udelej si interface, treba IMyComponentFactory, s jednou metodou create().
interface IMyComponentFactory
{
/**
* @return MyComponent
*/
function create();
}
Potom si dej do configu.
services:
- implement: IMyComponentFactory
arguments: [%mycomponent%]
class MyComponent extends Control
{
function __construct(array $params) {
// treba..
}
}
Do presenteru si pak nainjectujes onen interface a mas to.
/** @var IMyComponentFactory @inject */
public $myComponentFactory;
protected function createComponentMyComponent()
{
return $this->myComponentFactory->create();
}
Pokud by jsi chtel predavat komponente nejaky parametry kdyz ji tvoris, tak
si to predej do create(['a' => 1]);
A musel by jsi jeste trochu upravit config ;-)
Editoval Felix (16. 9. 2014 14:24)
- ondraondra81
- Člen | 82
Ten interface už mám, nicméně v konstruktoru už mám
function __construct(Facades\Articles $articles, Facades\Images $images)
pokud ho tedy rozšířím takto
function __construct(Facades\Articles $articles, Facades\Images $images, $settings)
stačí pořád v config.neon a proběhne autowired?
services:
- implement: IMyComponentFactory
arguments: [%mycomponent%]
nebo už tam potom musim nějak zadat i ty ostatni sluzby
- David Matějka
- Moderator | 6445
@ondraondra81 bud dej to settings na prvni misto, pak se zbytek autowiruje. Nebo muzes pouzit:
arguments: [..., ..., %components%]
#nebo
arguments: [2: %mycomponent%] #snad je to cislovany od nuly
#nebo (a tady si nejsem jistej, jestli to funguje)
arguments: [settings: %mycomponent%]
- ondraondra81
- Člen | 82
díky, celou dobu jsem těď hledal článek kde jsem to kdysi četl.
A nenašel :(
ani v dokumentaci jsem nic nenašel.