Open jelen07 opened 7 years ago
Věci které nejsou aktuálně prioritou nebo nejsou doposud jasné jsou přeškrknuty. Nějaký defaultní profil by by default asi neměl být. Zvážit tyto dvě možnosti:
V budoucnu se nad tímhle rozšířením bude dát vyblbnout. Nyní není úplně priorita mít nyní podchycené všechny možnosti co na projektech můžou nastat. Bude se to nabalovat postupně.
Pro možnost disable už byl poslán PR.
Osobně bych se přikláněl asi k variantě 1. Zobrazit v Panelu informaci + rozmyslet se, jestli by metoda Environment::getProfile()
měla v tomto případě vracet NULL, nebo vyhazovat výjimku.
Dále si myslím, že by na seznamu priorit němělo chybět nějaké rozhraní a základní implementace pro ukládaní aktuální kombinace profilu.
Btw. Ohledně informace localeDomain pro router
V Nette je zvyklostí registrovat router nějak takhle:
class RouterFactory
{
public static function createRouter()
{
# vrácí Nette\Application\IRouter, resp. RouteList
}
}
# config
router: App\RouterFactory::createRouter
Jako služba je tedy zaregistrovaný objekt RouteList, avšak teď je otázka, jak tento parametr získat již v metodě ::createRouter()
První možnost je si ho ručně předat například z parametrů (což postrádá smysl, aby byl tento parametr v konfiguraci Environmentu)
router: App\RouterFactory::createRouter(%foo%)
Další možnost, co mne napadla je v EnvironmentExtension::afterCompile()
přidat pro objekt RouteList extension method, takže si může RouteList vytáhnout parametr přímo ze sama sebe. Toto řešení funguje, avšak extension methods jsou až na výjimky (Forms) od Nette 2.4 deprecated.
Napadá tě nějaké jiné řešení?
Cílem je napsat rozšíření, které z konfigurace načte nastavení prostředí a provede jeho detekci, nyní neon, později se bude možná generovat z db (FYI).
Možnosti
mode - nepovinný, by default = tolerant, udává, zda-li lze libovolně kombinovat language x currency x country. Prozatim implementovat jen TolerantResolver. Další Progressive, CountryCurrency, ... (FYI)co se stane při změně jazyku: tolerant - změní jen jazyk (resp. doménu), currency - změní i měnu, country - změní i zěmi, progressive - změní vše (FYI)Ukázka konfigurace
Minimální konfigurace (by default) je tedy např.:Zvážit, zda-li výchozí konfigurace by neměla být nějaká spíše mezinárodního rázu ([CZ, US, GB], [cs_CZ, en_US], [USD, EUR, CZK]).Defaultní kombinace (nebude-li explicitně uvedeno jinak) bude použita pro CLI. Ta by měla být rozšířená o přepínač (profilu, příp. konkrétní kombinace). Toto ale ještě uvážit.Progress
TolerantResolverPřepínač pro CLIcountrySettings
"