Jak zjistit v presenteru/šabloně aktivní debug mód?
- amik
- Člen | 118
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 Mikeš
- Člen | 771
context. fujky
https://api.nette.org/…ebugger.html#…
$this->template->isProduction = \Nette\Diagnostics\Debugger::isEnabled();
Editoval Lexi (28. 4. 2014 10:10)
- Patrik Votoček
- Člen | 2221
@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
@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
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
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.