Zjištění hodnoty z configu v presenteru
- Andre
- Člen | 24
Poradíte mi prosím, jakým způsobem je možné číst hodnoty z config.nette v presenterech? Postup doporučovaný v https://forum.nette.org/…cist-hodnoty pomocí $this->context->params vyhazuje deprecated chybu.
Editoval Andre (17. 8. 2016 20:13)
- Felix
- Nette Core | 1247
@Lukzat
$this->context->parameters['nazev_parametru'];
Ne, ze by to bylo uplne blbe. Ale v ramci udrzitelnosti a prehlednosti aplikace, je lepsi predavat jenom konkretni parametry a nespolehat se, ze tam mas dostupny context, resp. container.
Ja vetsinou do presenteru nevkladam parametry (@CZechBoY). V presenteru mam povetsinou jenom tovarnicky na jednotlive komponenty a pripadne nejakou mensi logiku ohledne opravneni + tahani entit.
Vyhodu to ma v tom, ze tim „nespinis“ presentery, ale parametry obdrzi az velmi specificke/konkretni komponenty.
class MyPresenter {
function actionFoo() {
// potrebuje parametr $foo
}
function actionBar() {
// potrebuje parametr $bar
}
function actionBaz() {
// potrebuje parametr $baz
}
function actionFoobar() {
// potrebuje parametr $foobar
}
}
Pokud bychom meli takovyhle presenter, tak potrebujeme 4 fieldy a v configu (config.neon) nadefinovat 4 parametry.
services:
-
class: MyPresenter
setup:
- setFoo(%foo%) #1
- setBar(%bar%) #2
- setBaz(%baz%) #3
- setFoobar(%foobar%) #4
Pokud by to ale byly 4 komponenty, tak se nam to hezky vycisti.
services:
# rekneme, ze to jsou tovarnicky
- FooControlFactory(%foo%)
- BarControlFactory(%bar%)
- BazControlFactory(%baz%)
- FoobarControlFactory(%foobar%)
class MyPresenter {
function createComponentFoo() {}
function createComponentBar() {}
function createComponentBaz() {}
function createComponentFoobar() {}
}
Presenter je cisty, komponenty maji presne svoje parametry a vsichni jsou stastni. :-)
Nerikam, ze je to jedina cesta. Ale treba se to bude hodit.
Editoval Felix (18. 8. 2016 9:01)