Jak v rozšíření přistoupit k parametrům jiného rozšíření
- Tomáš Votruba
- Moderator | 1114
Chtěl bych mít vlastní rozšíření, které upraví parametry
rozšíření NetteExtension
.
Konkrétně přesunou toto nastavení z config.neon
do mého
Extension:
nette:
container:
debugger: TRUE
Nejdále jsem se dostal k tomuto (což nefunguje :)).
class MyExtension extends CompilerExtension
{
public function loadConfiguration()
{
$config = $this->compiler->getConfig();
$config['nette']['container'] = ['debugger' => TRUE];
}
}
Jak na to?
- Filip Procházka
- Moderator | 4668
Krátká odpověď: nejde to
Dlouhá odpověď: mohlo by to jít v budoucnu
- David Grudl
- Nette Core | 8240
Tomáš: protože getConfig() vrací kopii a ne referenci, tak to takto nefunguje.
Filip: můžeš to vysvětlit, jak by to mohlo jít v budoucnu?
- Filip Procházka
- Moderator | 4668
No tak zrovna u tohohle konkrétního případu mi nedává
absolutně smysl mít to jinde než v config.local.neon
. Tomáši,
zkus si pustit stránku s a bez tohohle panelu, je tam rozdíl vteřiny když
se renderuje (na stránce s hodně services hodně vteřin). To proste nechceš
k normálnímu vývoji.
Ale jako příklad…
namespace Nette\DI;
interface IContainerConfigProvider
{
/** @return array */
function getDIContainerConfig();
}
class MyExtension extends CompilerExtension implements Nette\DI\IContainerConfigProvider
{
public function loadConfiguration()
{
// ..
}
public function getDIContainerConfig()
{
return ['debugger' => TRUE];
}
}
Zbytek je doufám jasný z mého RFC.
- Tomáš Votruba
- Moderator | 1114
Díky za vysvětlení Filipe, použití
config[.local/.prod].neon
mi už teď přijde v pořádku.
Ono je toho více, co bych chtěl nastavit:
nette:
session:
autoStart: TRUE
debugger: TRUE
expiration: 30 days
container:
debugger: TRUE
debugger:
email: tomas.vot@gmail.com
bar:
- @\Schmutzka\Diagnostics\Panels\CleanerPanel
- Nextras\MailPanel\MailPanel
Pokud bych to měl pouze v config.local.neon
, nebudu
mít v dev módu na produkci k tomuto panelu přístup. Či ano?
Nebo lépe načítat config.dev.neon
, který bude dědit od
config.dev.neon
a přepisovat nastavení debug baru? Komplikované,
ale čisté.
- Filip Procházka
- Moderator | 4668
Pokud používáš config.local.neon
, tak žádné dev ani prod
nemáš. Nemáš ani config.local.neon
commitlý ve VCS.
Workflow je takové, že každý vývojář i hosting má svůj
config.local.neon
, který není commitlý a je ignorovaný. Tím
pádem může mít každý jiné heslo do lokální databáze a žádný
vývojář nemá u sebe v počítači (ani ve VCS) commitlé údaje pro
produkci.
Nastavení session je konkrétní pro aplikaci, na tom nevidím nic divného
mít to v app/config/config.neon
, stejně tak debugger email.
A když chceš změnit storage tak to jde úpravou služby přes
ContainerBuilder
.
Ovšem panely by mohly být registrovány z jednotlivých rozšíření, viz moje RFC.