$router->setRouter hlasí že už existuje, v defaultServices u Application změna nepomaha
- mcmatak
- Člen | 504
<?php
$application = Environment::getApplication();
$application->getServiceLocator()->removeService('Nette\\Application\\IRouter');
$application->getServiceLocator()->addService('Nette\\Application\\IRouter', 'Solis\Application\MultiRouter');
$router = $application->getRouter();
?>
no neni moc hezke
- mcmatak
- Člen | 504
zkoušel jsem, nepomohlo :(
<?php
[common]
; PHP configuration
php.date.timezone = "Europe/Prague"
; no more in nette 1.0
php.iconv.internal_encoding = "UTF-8"
; no more in nette 1.0
php.mbstring.internal_encoding = "UTF-8"
;php.default_charset = "UTF-8"
service.Nette-Application-IRouter = "\Solis\Application\MultiRouter"
?>
co jsem na tom napsal spatne?
nicmene fce setRouter, sem nepochopil, podle mne neexistuje okamžik kdy se dá použít!
- mcmatak
- Člen | 504
1. config nefunguje, vyzkoušeno, možná něco dělám špatně, ale jak to dělám to vidíte
Majkl578 napsal(a):
na1k napsal(a):
Pro vlastní implementace
services
můžeš použít config :)Ne pro podslužbu Nette\Application\Application.
2. setRouter nemá smysl z toho důvodu, že nelze změnit service, který už existuje, a service IRouter se vytváří automaticky při získání ServiceLocatoru, tedy setRouter se domnívám, že neexistuje místo, kde ho lze použít aniž by to vyvolalo chybu (proste service bude vytvořen dříve)
Mělo by to jít při změně výchozí služby v Application::$defaultServices před získáním instance routeru v boostrapu (
$application->getRouter()
).
defaultServices není statické pole
<?php
$application = Environment::getApplication();
$application->defaultServices['Nette\Application\IRouter'] = 'Solis\Application\MultiRouter';
$router = $application->getRouter();
?>
jsem přesvědčený, že jsem tohle zkoušel, ale jestli jsem se zase nespletl tak by to mělo fungovat