Jak zjistit, že jsem v developer modu z prezenteru

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

Zdravím,
je nějaký jednoduchý způsob, jak zjistit, že jsem v developer modu v presenteru (všeobecně všude v aplikaci)?
Jedná se mi o to, že odesílám při vyplnění formuláře email, a v developer modu bych ten mail odesílat nechtěl.

castamir
Člen | 629
+
0
-

Na mailer si udělej továrnu/službu a v configu nastav přes %productionMode%, zda jsi na produkční (resp. dev). V presenteru se k té informaci sice taky dostaneš, ale nemá to tam co dělat (představ si tucet přesenterů, které při nějaké akci něco posílají a v každém z nich to budeš muset ručně kontrolovat – proboha proč?).

Editoval castamir (7. 4. 2013 9:56)

enumag
Člen | 2118
+
0
-

@castamir: Přesněji stačí v dev režimu změnit službu nette.mailer (a samozřejmě ji používat namísto výchozího maileru v Nette\Mail\Message). Více informací v tomto tématu.

castamir
Člen | 629
+
0
-

@enumag no právě! Udělá si továrničku/službu, co mu bude vytvářet správný mailer v závislosti na tom, jestli je nebo není v dev režimu ;)

enumag
Člen | 2118
+
0
-

@castamir: Já jen, že jsi napsal „na mail“ místo „na mailer“, což může být trochu matoucí. ;-)

Richard Faila
Člen | 40
+
0
-

Pokud si to pamatuji dobře, tak se dá použít:

<?php
if (!$this->getContext()->parameters['productionMode']) $this->doSomething();
?>
enumag
Člen | 2118
+
0
-

@Richard Faila: To se samozřejmě použít dá, jen to není best-practice.

Jan Tvrdík
Nette guru | 2595
+
0
-

nedik wrote: Jedná se mi o to, že odesílám při vyplnění formuláře email, a v developer modu bych ten mail odesílat nechtěl.

Proč ten mail nechceš posílat? Není to jenom tím, že neznáš ty správné nástroje?

@enumag: $this->context->parameters['productionMode'] představuje korektní způsob, jak v presenteru zjistit, zda jsi v produkčním módu. Proč se domníváš, že to není best practise?

enumag
Člen | 2118
+
0
-

@Jan Tvrdík: Protože $this->context, nahrazení služby v config.local.neon je z hlediska DI lepší. Proč pokládáš otázku s předem naprosto zřejmou odpovědí?