Jak zjistit v presenteru/šabloně aktivní debug mód?

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

Ahoj,
Řeším již po několikáte v zásadě jednoduchý problém: jak v šabloně odlišit aktivní/neaktivní debug mód, případně prostředí (development, production)? Mám např. několik javascriptů, které chci includovat jen při aktivním debug módu, nebo automaticky podle debug módu volit mezi minified a plnou verzí některých skriptů.
Jak ale čistě na to? :)

  • nenašel jsem způsob, jak v Nette aplikaci v presenteru nebo šabloně zjistit, zda je debug mód aktivní (zřejmě to v souladu s DI ani přímo nejde)
  • tvořit na to službu, které v config.neon předám parametr, v presenteru si jí vytáhnu a doplním proměnnou isDebugJavascripts do šablony, mi připadá jako dělo na komára

Jak toto řešíte vy? existuje nějaké čisté jednoduché řešení v soluadu s DI?

Jan Endel
Člen | 1016
+
0
-

nějak takto:

$this->debugMode = $this->context->parameters['debugMode'];
$this->template->productionMode = !$this->debugMode;
Jan Mikeš
Člen | 771
+
0
-

context. fujky

https://api.nette.org/…ebugger.html#…

$this->template->isProduction = \Nette\Diagnostics\Debugger::isEnabled();

Editoval Lexi (28. 4. 2014 10:10)

amik
Člen | 118
+
0
-

Lexi diky, to je ono :) sice lehce nepresne, debug mod nemusi nutne odpovidat produkcnimu prostredi, ale zjistit debug mod mi staci. A je fakt, ze aktualnim prostredim by se aplikace primo ridit nemela, takze asi neni na skodu, ze zjistitelny neni.

Patrik Votoček
Člen | 2221
+
+1
-

@Lexi: ale to co píšeš ty je ještě horší než context :-D

config.neon

-
	class: MyPresenter
	arguments:
		debugMode: %debugMode%

MyPresenter.php

class MyPresenter extends \Nette\Application\UI\Presenter
{
	/** @var boolean */
	private $debugMode;

	/**
	 * @param boolean
	 */
	public function __construct($debugMode)
	{
		$this->debugMode = $debugMode;
	}
}
David Matějka
Moderator | 6445
+
0
-

@Patrik: tohle je hezky pro jeden konkretni presenter, je to ale problem pro base presentery

@amik: pokud to chces mit ciste, bez kanonu se neobejdes. Ja osobne nemam rad to „debugMode“ mimo konfiguraci (neon, extension).

Tomáš Kolinger
Člen | 136
+
0
-

V BasePresenteru použij bez obav context či lépe si injectni DI\Container (protože je context deprected?)… Není to pěkný řešení, to určitě ne ale nic lepšího nejspíše neexistuje.

Ještě můžeš mít něco jako ConfigService a tam si injectnout ty parametry ale to je už víceméně totožné jako šahat na Container.

Registrovat každý presenter v neonu jako službu je nesmysl.

Editoval Tomáš Kolinger (28. 4. 2014 22:04)

MartinitCZ
Člen | 580
+
0
-

Já vždy toto řeším vytvoříním třídy „Parameters“. Do ní si předám všechny paramatry (nebo se omezim na ty co potřebuji) a toto @inject-nu.