spristupnenie sluzby definovanej v app/config.neon v configu extension
- Matúš Matula
- Člen | 257
ahoj, mam extension registrovanu v bootstrapu (nette 2.0.x) a v configu mam
factories:
newsletter.mail < nette.mail:
setup:
- setFrom(%contact.infoEmail%, 'xxx')
v app/config.neon
(nacitanom pred registraciou rozsirenia) mam
ale rozsirenu sluzbu nette.mail
nette.mail:
class: MailMessage
setup:
- setMailer(@nette.mailer)
Problem je, ze v extension::loadConfiguration
ked parsujem
config, tak berie povodnu definiciu nette.mail
.
<?php
public function loadConfiguration()
{
$builder = $this->getContainerBuilder();
$this->compiler->parseServices($builder, $this->loadFromFile(__DIR__ . '/config.neon'));
}
?>
Co treba spravit aby to bralo uz tu upravenu z
app/config.neon
?
- Matúš Matula
- Člen | 257
No uz som na to prisiel. Odsledoval som, ze config pre rozsirenie sa vola
este pred parsovanim app/config.neon
, a teda dana sluzba este nie
je prepisana. Riesenim je dat sluzbu dedenu a dediacu do 1 neon suboru alebo
potom posunut parsovanie dediacich sluzieb rozsirenia do
beforeCompile
– toto asi nie je prilis spravne, podla docky
V této fázi sestavování už by neměly přibývat další služby.
To rozsirenie registrujem v bootstrape takto
$configurator->onCompile[] = function ($configurator, $compiler) {
$compiler->addExtension('newsletter', new \Controls\Newsletter\NewsletterExtension());
};
Aka je best practice pre tento scenar?
Da sa zariadit, aby config extension bol parsovany az po nacitani
app/config.neon
?
- Tomáš Votruba
- Moderator | 1114
Ahoj, pokud potřebuješ v app/config.neon
upravit cokoliv pro
své rozšíření, koukni do dokumentace:
Konkrétně takto:
config.neon
extensions:
newsletter: Controls\Newsletter\NewsletterExtension
newsletter:
mailer: @someCustomService