Parametry z configu rovnou do šablony?
- Mysteria
- Člen | 797
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í. :)
- Mysteria
- Člen | 797
@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
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
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
@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
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