several config.neon, need service from another config.neon

4 years ago

mcmatak
Member | 496
+
0
-

i am trying to load several config.neon files:

$configurator->addConfig($this->parameters['cronModuleAppDir'] . '/config/config.neon', $configurator::AUTO);
$configurator->addConfig($this->parameters['coreAppDir'] . '/config/config.services.neon');
$configurator->addConfig($this->parameters['appDir'] . '/config/config.neon');

but i still get this error:

Service of type Loggers\LoggerService needed by System\Application\Cron\CronQueueFactory::__construct()

this is due to the cronqueuefactory is defined in core/config.services.neon and loggerservice is defined in cronmodule/config.neon

how to solve it?

based on url i add different configuration files, in one you have filelogger, in another you have consolelogger etc.

any idea?

4 years ago

mcmatak
Member | 496
+
0
-

mcmatak wrote:

i am trying to load several config.neon files:

$configurator->addConfig($this->parameters['cronModuleAppDir'] . '/config/config.neon', $configurator::AUTO);
$configurator->addConfig($this->parameters['coreAppDir'] . '/config/config.services.neon');
$configurator->addConfig($this->parameters['appDir'] . '/config/config.neon');

but i still get this error:

Service of type Loggers\LoggerService needed by System\Application\Cron\CronQueueFactory::__construct()

this is due to the cronqueuefactory is defined in core/config.services.neon and loggerservice is defined in cronmodule/config.neon

how to solve it?

based on url i add different configuration files, in one you have filelogger, in another you have consolelogger etc.

any idea?

the same problem is when you have services injection in your presenters and you have services defined in more config.neon files, when you add the first config.neon the presenters are checked if the service is defined, and dont wait for next config.neon

4 years ago

David Matějka
Moderator | 5936
+
0
-

this is due to the cronqueuefactory is defined in core/config.services.neon and loggerservice is defined in cronmodule/config.neon

when you add the first config.neon the presenters are checked if the service is defined, and dont wait for next config.neon

That is not the reason – all config files are loaded before services are processed. Could you please show the content of config files?

4 years ago

mcmatak
Member | 496
+
0
-

$configurator->addConfig($this->parameters[‘cronModuleAppDir’] . ‘/config/config.neon’, $configurator::AUTO);

common:
    parameters:

    php:
        date.timezone: Europe/Prague
        mssql.charset: UTF-8

    application:
        errorPresenter: Error
        mapping:
            *: App\*Module\Presenters\*Presenter

    session:
        expiration: 14 days

    extensions:
        varioConnection: Dibi\Bridges\Nette\DibiExtension22

    services:
        routerFactory: CronModule\System\Router\RouterFactory
        router: @routerFactory::createRouter

production < common: []
development < common: []
console < common: []

$configurator->addConfig($this->parameters[‘coreAppDir’] . ‘/config/config.services.neon’);

extensions:
    webloader: WebLoader\Nette\Extension
    translation: Kdyby\Translation\DI\TranslationExtension

services:
    user: Security\User
    - Security\Authorizator
    - Model\Users\UsersService

    # jaky logger pouzijeme? bude se logovat na consoli nebo do souboru
    #logger: Loggers\Console\ConsoleLoggerFactory(%logVerbosity%)
    logger: Loggers\File\FileLoggerFactory(%logDir%, %logVerbosity%)

    - Loggers\LoggerService(@logger)

    # logovani sql query dotazu do souboru, nema nic spolecneho s klasickymi ILoggerService
    #loggers.databaseLogger:
    #   class: Loggers\NetteDatabaseLogger\NetteDatabaseLoggerService
    #   arguments: [%logDir%, "Y-m-d-H-i-s"]
    #   tags: [run]


    varioConnection:
        class: Database\SqlVario(%varioConnection%)

    - {class: System\Listeners\DisableSessionListener, tags: [kdyby.subscriber]}

    - System\Application\Cron\CronQueueFactory

    - LogisticModule\Model\Vario\VarioAgendaServices(%varioAvisUrl%)

    - AdminModule\Connector\ConnectorService("%appDir%/config/googledrive")

    - AdminModule\Model\DefaultEventService
    - AdminModule\Model\DefaultLocaleEventService
    - AdminModule\Model\Producers\ProducerEventService
    - AdminModule\Model\Users\UserEventService
    - AdminModule\Model\Categories\CategoryEventService
    - AdminModule\Model\ParameterValueLocales\ParameterValueLocaleEventService
    - AdminModule\Model\ParameterValues\ParameterValueEventService

    - AdminModule\Model\DefaultFormBuilderService
    - AdminModule\Model\SearchTemplates\SearchTemplateFormBuilderService
    - AdminModule\Model\Roles\RoleFormBuilderService
    - AdminModule\Model\Users\UserFormBuilderService
    - AdminModule\Model\Products\ProductFormBuilderService

    - System\FileUploader\FileUploaderService("%appDir%/media")

    - Model\Import\ImportImagesService("%appDir%/media/import/images")

$configurator->addConfig($this->parameters[‘appDir’] . ‘/config/config.neon’);

parameters:
    media:
        relativeMediaDir: "/media"

    images:
        allowed:
            sizes: {20x20, 100x100, 1000x1000, 1000x100}

includes:
    - config.local.neon

config.local.neon

parameters:
    salt: xyz
    logVerbosity: 1

4 years ago

mcmatak
Member | 496
+
0
-

but the problem is during the services processing, bcs if you have services in 2 config.neon it is problem, when you try to add first config nette check all injection in presenters, if it find injection which is not included in first config it crash,

if it is feature, so very hard to join configs based on independent modules

4 years ago

David Matějka
Moderator | 5936
+
0
-

Where do you call those ->addConfig? do you have it before createContainer()? Could you show bootstrap.php?