spristupnenie sluzby definovanej v app/config.neon v configu extension

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Matúš Matula
Člen | 257
+
0
-

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
+
0
-

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?

Matúš Matula
Člen | 257
+
0
-

nikto ziadny napad?

Tomáš Votruba
Moderator | 1114
+
0
-

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