vlastni globalni config promenna (pro php i latte)

Notice: This thread is very old.
luky84
Member | 16
+
0
-

Cau,

v moji stare aplikaci asi jako kazdy jsem mel config.php v nem treba:

DEFINE('DEBUG', 1);

a pak

$smarty->assign('debug', DEBUG);

takze ve vsech PHP skriptech i sablonach jsem mohl pracovat s DEBUG constantou ci smarty promennou.

Jak mam tohle udelat v Nette? (Nejde konkretne o debug, muze to byt treba defaultLanguage promenna atd..)

Aby to bylo pristupny v latte sablonach a pripane i vsech presenterech.

Teoreticky by to mohlo byt v nejakem neon souboru, ale mohla by byt i varianta ze chci aby ta promenna byla dynamicka, tedy aby to bylo treba i v php souboru. Jaka jsou reseni?

Diky

Last edited by luky84 (2015-07-15 13:57)

luky84
Member | 16
+
0
-

Nasel jsem si odpoved. Pro pripad nastaveni v neon souboru, staci dat promennou do sekce parameters napr:

`parameters:
param2: ‘val2’

A v presenteru se pak vola:
$this->context->parameters[‘param2’]`

Last edited by luky84 (2015-07-15 14:18)

David Kudera
Member | 455
+
0
-

To ale není ta nejlepší odpověď ;-) viz tady nebo tady

luky84
Member | 16
+
0
-

Krom toho tedy pak je jeste ta druha cast, jak ty promenne nacist v latte, a nenasel jsem jiny zpusob nez tento:

	$this->template->parameters = $this->context->parameters;

Nebo existuje nejaky jiny zpusob jak to z latte nacist, treba nejake makro? Asi ne?

luky84
Member | 16
+
0
-

A co se tyka tvych odkazu Davide, je nejaky duvod proc je lepsi to delat takto “slozite”? Znam treba dogmatickou myslenku OOP ze by se mely pouzivat treba getter metody misto primeho cteni properties, ale priznejme si, ze to je opruz. A kdyz si clovek porovna tento pripad cteni promennych, pripada mi to jak kanon na vrabce, a v hlave mi rezonuje otazka, proc delat veci slozite kdyz se daji udelat jednoduse (KISS). Aby to nebylo tak ze clovek programuje jadernou elektrarnu kdyz si chce jen precist jeden parameter :). Dik

Last edited by luky84 (2015-07-15 15:36)

David Kudera
Member | 455
+
0
-

Chápu :-) je to celkem snadný..

  1. getContext je deprecated , takže může být smazán (nebo spíš asi úplně znepřístupněn)
  2. přehlednost, pokud otevřu nějakou třídu, kde mám např. setDebugMode metodu, tak vidím, co používá za parametry
  3. pokud třídě musím předat nějaký seznam parametrů (třeba celý di container), tak se to potom hůř používá samostatně. Nezavolám jednoduše ->setDebugMode(true), musím předat celý container
  4. testování, tam se hlavně ukáže bod 3.
  5. podobnost se službami. Také nechám na autowiringu, aby mi injectnul pouze ty služby, které potřebuji. Nepožívám celý container (klavír), ale jen to, co skutečně potřebuji. Závislost jdou ihned vidět – ale to už je zase 2. bod

Last edited by David Kudera (2015-07-15 16:00)

luky84
Member | 16
+
0
-

Aha. No moc tomu nerozumim co pises, pouzivam nette dneska prvni den. jen si rikam kdyby getContext() zmizelo a properta context je skutecna (a public – a to asi ale nebude), dalo by se na ni dal pristupovat i bez existence te get metody. Ale to asi neni dulezite. Dale ja zadnou hlasku deprecated nevidim, tak jako treba nekteri zminovali, a to mam Nette 2.3. Kazdopadne pokusim se teda nejak zorientovat v tom reseni co nabizis.

Jinak co se tyka toho meho zadani, tak predpokladam ze abych toho dosahl, tj zpristupneni tech neon config promennych ve vsech sablonach, asi budu muset tedy pracovat s BasePresenterem, tak uvidim.

Jinak tedy viz muj predchozi comment, predpokladam ze neni jine cesty nez pridat nejakou vlastni promennou viz vyse do sablony, ze Latte nema zadne makro na cteni tech konfiguracnich promennych.

Last edited by luky84 (2015-07-15 17:08)

David Kudera
Member | 455
+
0
-

Jj pokud chceš něco předat do všech šablon, tak k tomu je BasePresenter a metoda beforeRender.

Jinak pokud v Nette (ve třídách dědících od Nette/Object) přistupuješ zvenku k nějaké property, která je private a zároveň existuje metoda get<PropertyName>, tak bude zavolána tahle metoda. Něco víc o tom najdeš tady.

A žádné varování o deprecated to nehází, je to napsáno jen v phpDoc, jak jsem posílal dřív..

luky84
Member | 16
+
0
-

aha, super diky za informaci