Parametry z configu rovnou do šablony?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Mysteria
Člen | 797
+
+1
-

Zdravím, určité parametry z configu potřebuju dostat do všech šablon. Momentálně to řeším zhruba takto:

abstract class BasePresenter extends \Nette\Application\UI\Presenter {
    /** @var Nette\DI\Container @inject */
    public $container;

    public function startup() {
        parent::startup();
        $this->template->parameters = $this->container->getParameters();
        $this->template->registerHelperLoader('Helpers::loader');
		...
    }
}

Otázka zní, jestli nejdou nějak poslat všechny (ideálně určité) parametry z configu rovnou do šablony.

Díky za nasměrování. :)

akadlec
Člen | 1326
+
0
-

Stejným způsobem? Buď si do šablony předáš ty co chceš a nebo teda všechny ne?

Mysteria
Člen | 797
+
0
-

@akadlec: Nejspíš si mě špatně pochopil, já to myslel tak, jestli to nejde udělat bez tohohle kódu v BasePresenteru. Něco jako je to v cfg u služeb. Že bych prostě přímo v cfg řekl, že chci mít ve všech šablonách tenhle a tenhle parametr.

akadlec
Člen | 1326
+
0
-

tak basepresenter máš jen jeden tak to snad není problém ne?

Mysteria
Člen | 797
+
0
-

@akadlec: Není, šlo mě o to z hlediska, že jsem někde četl, že tahat celej container není úplně ideální a já ho používám právě jenom na tohle vložení parametrů do šablon. Tak jestli to nejde udělat nějak efektivněji. Pokud je to tahle v pohodě, tak není samozřejmě problém. :)

Mesiah
Člen | 240
+
0
-

Máš pravdu, na foru se to několikrát probíralo, že šahat na context není ideální (a taky proč) – obcházelo se to službou, která šahala na parametry – na foru to určitě najdeš.
Ale rozumím ti, že se ti to nelíbí ani v BasePresenteru, zvlášť když si člověk přečte Davidův post „BasePresenter je antipattern“ – většina presenterů pravděpodobně ty parametry nevyužije a nechceš mít redundantní kód pro presentery, které je využijí – na tohle by se hodily traity z php 5.4.
Nebo jsem tě vůbec nepochopil? :)
Ale bacha, pamatuj, že existuje něco jako Occamova břitba (KISS).

Editoval Mesiah (31. 1. 2014 13:37)

David Matějka
Moderator | 6445
+
0
-

o jaky parametry se konkretne jedna? kdyz potrebuju neco z configu dostat do sablony, resim to vzdycky individualne (samostatna sluzba, komponenta apod.). sluzba, ktera v sobe ma vsechny parametry mi prijde silne wtf

Mysteria
Člen | 797
+
0
-

@Mesiah: Ano, přesně tohle jsem myslel. :)

@matej21: Momentálně například parametry pro stránkování typu počet věcí na stránce a kolik odkazů na další stránky má být zobrazeno od aktuálně vybrané stránky.

@Filip Procházka: Tohle jsem našel, až na to, že moje odpověď na „záludnou otázku“ by byla, že jedinný jejich použití je v podmínce typu:

{for $i = ($page - $pageLimit <= 1 ? 1 : $page - $pageLimit); $i <= ($page + $pageLimit <= $pagesCount ? $page + $pageLimit : $pagesCount); $i++}
...
{/for}
David Matějka
Moderator | 6445
+
0
-

V 2.1 je hezká věc – presenter jako služba. Pak si přímo na presenter můžeš nastavit počet článků na stránce apod. Pokud je nějaká část stránky všude a ty ji proto inicializuješ v base presenteru tak to refaktoruj a udělej si na to komponentu, kterou zas nakonfigurujes přímo v neonu

Mysteria
Člen | 797
+
0
-

@matej21: Ale tím se pořád nevyhnu tomu, že to budu muset z presenteru předat do šablony, ne? No, asi si na to opravdu zkusím napsat komponentu. Dík. :)

akadlec
Člen | 1326
+
0
-

Tak ten parametr na počet si předáš v konstruktoru komponenty ne?