Jak detekovat prostředí/režim v presenteru?
- Tori
- Člen | 32
Dobré aprílové ráno.
Potřebovala bych nějakým způsobem dostat do šablony informaci, jestli web
běží na localhostu (nebo ve vývojářském režimu) anebo ne. Je to kvůli
vkládání měřicího kódu GA.
Všechno, co jsem tu našla, se týkalo jen bootstrapu a nevím, jak se
v presenteru dostat ke $configurator
. Třída
Environment
se zřejmě už dlouho nepoužívá, ale jak je to
správně v Nette 2? Díky moc za radu / odkaz.
- Michal Vyšinský
- Člen | 608
Zdravím,
debug mode lze zjistit z parametrů:
$this->context->parameters["debugMode"]
- thunderbuff
- Člen | 164
použití $this->context není v nette 2 úplně správně. Podle filozofie dependency injection by to spíš měla obstarávat nějaká služba. Znamená to víc psaní. Dělá se to nějak takto:
v config.neon si zaregisruj novou službu:
common:
services:
GoogleAnalytics: GoogleAnalytics(%debugMode%)
Vytvoř si třídu služby:
<?php
class GoogleAnalytics extends \Nette\Object{
private $debugMode;
public function __construct($mode) {
$this->debugMode = $mode;
}
public function getGACode() {
if ($this->debugMode) {
return false;
}
return "ga kod";
}
}
?>
V presenteru vytvoříš:
<?php
public function injectGA(\GoogleAnalytics $googleAnalytics) {
$this->googleAnalytics = $googleAnalytics;
}
public function beforeRender() {
$this->template->gaCode = $this->googleAnalytics->getGACode();
}
?>
a v šabloně budeš mít přístupnou proměnnou $gaCode. Na produkci vypíše GA kod, na devu nic.
// EDIT:
také to lze takto:
<?php
$production = \Nette\Diagnostics\Debugger::$productionMode;
?>
Editoval thunderbuff (2. 4. 2013 13:31)
- Michal Vyšinský
- Člen | 608
Ano, vím, že to není úplně správně. Jen to bylo jediné jednoduché řešení, které mě zrovna napadlo. Nicméně tvé řešení přes inject do služby je samozřejmně lepší :)