RoutingDebugger
- nejman
- Člen | 13
Ahoj,
bezi mi Nette na verejne adrese. Zkousim zapnout RoutingDebugger, ale vyhazuje
to chybu:
Notice: Indirect modification of overloaded property Template::$routers has no effect in /var/www/netflow.cesnet.cz/http/mgmt/app/RoutingDebugger/RoutingDebugger.php on line 87
Musel jsem nastavit development mod a to bud:
Environment::setMode(‚production‘,false);
nebo pres config.ini volbou
mode.production = FALSE
Pokud je Nette v development modu zobrazi se hlaska vyse, s tim, ze okno
pro RouteDebugging
se zobrazi, ale nejsou v nem vypsany zadne routy, jen je videt ta ktera je
„aktivni“.
Bezi mi to v PHP 5.2.0–8+etch16, Nette jsou zkousel jak stable, tak
i posledni night build.
Nevite co s tim?
Diky,
Honza
- Ondřej Mirtes
- Člen | 1536
Tahle hláška je bug té verze PHP 5.2.0.
Nastane, když napíšeš něco takovéhleho:
$this->bar[] = 'foo';
Prostě začneš přistupovat k atributu třídy jako k poli, aniž bys ho předtím nějak inicializoval.
Řešením je před tím inkriminovaným řádkem 87 uvést něco takovéhleho:
$this->bar = array();
- nejman
- Člen | 13
Zkusil jsem nainstalovat RoutingDebugger 2 a tam je stejny problem, tentokrat na radce 127.
$this->template->routers[] = array( ‚matched‘ ⇒ $matched, …
Tedy jak pises, zapis do neinicializovaneho atributu.
Ale predtim v metode paint() je:
$this->template->routers = array();
Tedy atribut by mel byt inicialozavany. To prirazeni hodnot do templatu je az
po te
inicializaci v metode paint(). Nemuze to byt necim jinym nebo nejake jine
reseni?
Diky,
Honza
- nejman
- Člen | 13
Ahoj,
moc diky za tipy. Uz jsem to nasel a opravil RoutingDebugger. Akceptuje David
Grudl patche?
Asi by stalo za to zaktualizovat doplnek…
Vyresil jsem to pres novy atribut private $routers;
ktery
naplnim ve funknci analyze a
v metode paint se pak nastavi
$this->template->routers=$this->routers;
Funguje bezvadne. Jeste jednou diky…
Honza