Nette neon načítanie boolean hodnoty z env
- steelbull
- Člen | 240
Pridal som v bootstrap načítavanie z env:
$configurator->addDynamicParameters([
'env' => getenv(),
]);
Problém však je pri iných typoch, ako string. Ak priradím napr.
mail:
...
port: %env.APP_SMTP_PORT%
...
dostanem chybu: The dynamic parameter used in ‚mail › port‘ expects to be int, string ‚587‘ given.
Viem nejak pretypovať hodnotu z env (string) na int a v iných prípadoch aj na bool?
A viem nejak nastaviť default hodnotu, keď nie je definovaná v env?
Editoval steelbull (9. 12. 2023 22:40)
- steelbull
- Člen | 240
David Grudl napsal(a):
veľmi pekne ďakujem za odpoveď, aj to som skúšal, ale po zadaní:
mail:
smtp: int(::getenv('MAIL_SMTP'))
dostanem exception:
The item 'mail › smtp' expects to be bool, object Nette\DI\Definitions\Statement given.
Mám ale ešte druhý problém. Ako vyplním default value ak nie je hodnota definovaná v env (pri tomto fielde to nemá význam, ale mám veľa iných, kde by som potreboval mať default value)?
Editoval steelbull (12. 12. 2023 12:23)
- steelbull
- Člen | 240
mystik napsal(a):
Pak to je omezeni te extension co pouzivas, ktera vyzaduje staticky uadany bool a nedovoluje dynamice nacitani z env
Neviem o aký extension má ísť, lebo ten tield sa týka nette/mail. Skúšal som aj pri viacerých fieldoch, ale pokiaľ je vyžadovaný typ, tak všade je rovnaký problém. Mám ale ešte aj druhý väčší problém – Exception v prípade, ak v env hodnota nie je definovaná. Chcel by som ideálne docieliť stav, že niektoré hodnoty budú povinné ale niektoré vybrané hodnoty budú obsahovať default hodnotu.
Dá sa v neone niečo také urobiť? Ak nie, potom by som to musel vyriešiť ešte v bootstrap.php aby v env už všetky existovali, kým sa v neone použijú, ale chcem sa vyhnúť (ako v čechách hovoríte „prasárni“ :D), aby som všetky hodnoty z env nemusel mať vymenované v bootstrape.
- David Grudl
- Nette Core | 8149
Dá sa v neone niečo také urobiť?
Můžeš si na to udělat funkci.
Nicméně v mail > smtp
nemůže být dynamická hodnota.
Hodnota musí být známá už v době kompilace, protože podle toho generuje
kontejner.
- steelbull
- Člen | 240
David Grudl napsal(a):
Dá sa v neone niečo také urobiť?
Můžeš si na to udělat funkci.
Nicméně v
mail > smtp
nemůže být dynamická hodnota. Hodnota musí být známá už v době kompilace, protože podle toho generuje kontejner.
Veľmi pekne ďakujem za všetky odpovede.
Funkciu, ktorú si na to môžem urobiť budem vedieť použiť priamo
v neone? Skúšal som použiť funkciu pri tom smtp fielde, ale mal som vždy
rovnaký výsledok (exception ako som spomenul skôr). A práve pre takéto
prípady som chcel nastavovať hodnotu z env: pre smtp
,
timeout
, encryption
, tracy fieldy a ďalšie.
V podstate potrebujem vyriešiť len tie, ktoré musia byť nastavené pri
inicializácii nette spôsobom
isset(env['SMTP']) ? (bool)env['SMTP'] : false;
Teraz to viem
vyriešiť len tak, že hodnoty predpripravím v bootstrape, aby boli v neone
už v správnom tvare.