Use of undefined constant WWW_DIR – assumed ‚WWW_DIR‘

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

Dobrý den.
Přešel jsem na Nette 2.0.8 ve kterém mi nefunguje konstanta WWW_DIR
Use of undefined constant WWW_DIR – assumed ‚WWW_DIR‘

Jak mám tento problém obejít? Ta konstanta se přejmenovala,nebo úplně zrušila?

Děkuji za info

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Tato konstanta prakticky vzato nebyla součástí Nette, jen byla v sandboxu, a proto si na ni každý zvyknul. Neměl by být problém si ji třeba v index.php dodefinovat.

MartinitCZ
Člen | 580
+
0
-

Osobně jsem toho názoru, že $this->context->parameters['wwwDir'], se vždy dá přes setter nebo constructor předat ;)

EDIT: Omlouvám se za chybu, viz post podemnou.

Editoval martinit (15. 1. 2013 16:43)

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Upřesním, ať to nemate: $this->context->parameters['wwwDir'].

enumag
Člen | 2118
+
0
-

Upřesním: context je deprecated, parametr %wwwDir% by se měl dané službě předat už v configu.

jiziii
Člen | 12
+
0
-

Ahoj muže prosím někdo podrobněji popsat jak tu konstantu WWW_DIR přesně nadefinovat?
Pro mě jako začátečníka dělat neco v konfigu je za trest a v index.php se mi to nepodařil nadefinovat.
děkuju za každou odpověď

vitkutny
Člen | 73
+
0
-

v configu je již nadefinovaná jako wwwDir, pokud bys ji chtěl dostat do nějaké služby můžeš ji předat konstruktorem

common:
	services:
		nazevSluzby: Nejaky\Name\Space\NazevTridy(%wwwDir%)

pokud se ti to nechce učit v configu dělat teď, použij

$this->context->parameters['wwwDir']

Ale s tím že to co nejdříve až budeš mít na to čas přepíšeš na to první řešení přes config.

jiziii
Člen | 12
+
0
-

Zkusil jsem to v tom configu takhle

common:
	services:
		pictureRepository: Todo\PictureRepository(%wwwDir%)

ale pořád mi to nefunguje jestli to je správně tak budu hledat chybu jinde, jestli tam mám chybu tak prosím poraďte kde

llook
Člen | 407
+
0
-

Jestli chceš „čisté“ řešení, tak viz výše, jestli chceš snadné řešení, tak si do index.php přidej:

define('WWW_DIR', __DIR__);
vitkutny
Člen | 73
+
0
-

ve třídě Todo\PictureRepository

public function __construct($wwwDir){
	dump($wwwDir);
}
jiziii
Člen | 12
+
0
-

když nechám

common:
    services:
        pictureRepository: Todo\PictureRepository(%wwwDir%)

a do PictureRepository přidám jak psal vitkutny

public function __construct($wwwDir){
    dump($wwwDir);
}

tak to píše furt
Use of undefined constant WWW_DIR – assumed ‚WWW_DIR‘

a když to v configu a repository smažu a vložím podle llook do index.php

define('WWW_DIR', __DIR__);

tak už netbeans píše introduce variable
a na stránce pořád: Use of undefined constant WWW_DIR – assumed ‚WWW_DIR‘

zajimavý je že v jiným presenteru mám

$imgUrl = $this->context->params['wwwDir'] . '/images/upload/' . $file->name;

a to mi normálně funguje

llook
Člen | 407
+
0
-

To define musí být na začátku, tj. ještě před includem bootstrapu.

jiziii
Člen | 12
+
0
-

jo už to pomohlo hodil jsem to na začátek index.php stránky a už jsem pokročil moc dík

vitkutny
Člen | 73
+
0
-

při předávání přes konstruktor se WWW_DIR vůbec nepoužívá, ale z konstruktoru si ji uložíš do proměnné ve třídě a pak používáš přes $this->promenna

public $wwwDir;
public function __construct($wwwDir){
	$this->wwwDir=$wwwDir;
}
public function actionDefault(){
	dump($this->wwwDir);
}