Správná cesta wwwDir při použití více indexů

Tomáš Vodička
Člen | 28
+
0
-

Mám v projektu definovaný wwwDir takto (nevím jestli jsem dříve přehlédl, že Nette vyplňuje tuto proměnnou samo, nebo to v té době ještě nedělalo)

parameters:
	wwwDir: %appDir%/../www/

a pomocí DI si proměnnou předávám do modelu, abych mohl pracovat se soubory ve složce www/upload/

services:
	- Model(%wwwDir%)

Toto funguje v pořádku. Problém nastal, když jsem z určitých důvodů přidal do aplikace další index.php v jiném zanoření (např. www/api/index.php) – v tento moment jsem zjistil, že mnou definovaná proměnná wwwDir je od Nette tiše přepsána na složku s aktuálně spouštěným index.php, protože defaultní proměnné se aplikují až po načtení všech configů

Pokud bych si tedy chtěl definovat proměnnou pro složku www/upload/, nesmím pro to využít wwwDir, ale obejít to třeba takto?

parameters:
	uploadDir: %appDir%/../www/upload/
Pepino
Člen | 249
+
0
-

Určité důvody pro další index v aplikaci neexistujou. Proč to tak máš? Čeho se snažíš docílit?

Marek Bartoš
Nette Blogger | 1176
+
+4
-

To že wwwDir se odvíjí od vstupního bodu je známý problém, už jsem se ho pokoušel vyřešit https://github.com/…trap/pull/65

To že mají výchozí parametry prioritu je dané tím, že parametry přidané přes Configurator mají mít prioritu před těmi z configu a bohužel se tebou definované parametry načítají v Configurator úplně stejně jako výchozí – asi by se dalo vyřešit, ale pro teď se s tím budeš muset smířit.

Řešení je nastavit si wwwDir přes Configurator v bootstrapu

$configurator->addStaticParameters([
	'wwwDir' => dirname(__DIR__) . '/www',
]);
Marek Bartoš
Nette Blogger | 1176
+
+4
-

Pepino napsal(a):

Určité důvody pro další index v aplikaci neexistujou. Proč to tak máš? Čeho se snažíš docílit?

Ať má důvod jakýkoli, tak existují. Třeba pro konzoli to tak mají všichni.

Tomáš Vodička
Člen | 28
+
0
-

Mám na serveru skript pro spouštění consumerů pro RabbitMQ – server je nějakou linuxovou logikou spouští a znovuspouští při chybě sám. Trochu jsem tedy osekal klasický index.php a dal ho zvlášť do složky bin

Tomáš Vodička
Člen | 28
+
0
-

Marek Bartoš napsal(a):

To že wwwDir se odvíjí od vstupního bodu je známý problém, už jsem se ho pokoušel vyřešit https://github.com/…trap/pull/65

To že mají výchozí parametry prioritu je dané tím, že parametry přidané přes Configurator mají mít prioritu před těmi z configu a bohužel se tebou definované parametry načítají v Configurator úplně stejně jako výchozí – asi by se dalo vyřešit, ale pro teď se s tím budeš muset smířit.

Řešení je nastavit si wwwDir přes Configurator v bootstrapu

$configurator->addStaticParameters([
	'wwwDir' => dirname(__DIR__) . '/www',
]);

Super, díky za info. Tímhle způsobem to funguje tak, jak bych čekal