Ako dostat do configu parameter z prezentru?

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

Caute, neviete mi poradit? Mam takyto pripad: Mam presenter v nom mam parameter napr: layoutName ktory sa nastavuje v prezentru a tento parameter potrebujem pouzit v configu. Uvazoval som ze si urobim servisu tu injectnem do presentru a nastavim servise ten parameter a nasledne v configu si zavolam ten parameter zo servicse. Lenze to nepojde, lebo config sa vykonava skor ako by som ten parameter nastavil v presentru. Neviete mi poradit ako to riesit? Proste potrebujem dostat parameter z presentru do configu.

class FooPresenter extends BasePresenter{

	/** @var  MyService */
	private $myService;

	public function injectMyService(MyService $myService)
	{
		$this->myService= $myService;
	}

	public function startup()
	{
		parent::startup();
		$this->myService->setLayoutName("myLayout");
	}
}
class MyService extends Nette\Object{

	private $layoutName;

	public function setLayoutName($layoutName){
		$this->layoutName = $layoutName;
	}

	public function getLayoutName(){
		return $this->layoutName;
	}

}

services:
    myService : MyService

parameters:
	layoutCss: @myService...zavolam getLayoutName()
David Matějka
Moderator | 6445
+
0
-

kratce: takhle to nepujde

tam, kde budes potrebovat ten parametr, tak si vyzadej jako zavislost MyService a vem si ho odtud

duskohu
Člen | 778
+
0
-

matej21 napsal(a):

kratce: takhle to nepujde

tam, kde budes potrebovat ten parametr, tak si vyzadej jako zavislost MyService a vem si ho odtud

Problem je v tom ze tu zavislost potrebujem dat do konfigu. Preco si to nevyziadam niekde kde to potrebujem? Lebo dalsej sluzbe davam na vstup nejake parametre napr zoznam css suborov a ciest k nim. neviem ta servise nechce dalsiu sluzbu, ale ten zoznam. Hmm, tak to musim nejako inak riesit.

akadlec
Člen | 1326
+
0
-

imho se snažíš jít pozpátku, tj. z presenteru zpět na začátek ke konfigu. Zkus si to promyslet jinak. Já jsem taky přemýšlel jak řešit dynamicky CSSka a JSka a šel jsem cestou vlastního CDNka.

  1. V presenteru si na základě podmínky nastavím šablonu.
  2. Při renderování si sestavím cestu k šabloně podle jejího názvu.
  3. Jako CSSka si dám pouze jeden link na CDNko kde předám potřebné informace
  4. Pro JS je to to samé.
  5. Stránka se načte.
  6. Začnou se natahovat CSSka a JSka o které se postará presenter CDNka a ten na základě parametrů a podmínek pozná co vše tam má natáhnout. Zároveň provede spojení a minifikaci a nacachování

Výhoda je že se mě to řeší vše na jednom místě (CDN modul), rychlejší zpracování JS a CSS díky jiné doméně a tudíž možnosti paralelního načítání.