Class and factory are missing in definition of service ‘*’

3 years ago

holantomas
Backer | 56
+
0
-

Hi I don't know if it's bug or “feature” BUT.

If I try to use combinatione Nette\DI\CompilerExtension with standard config.neon setup it's throws Class and factory are missing in definition of service 'testService'.

Extension file

class TestExtension extends CompilerExtension {

    public function loadConfiguration() {
        $builder    = $this->getContainerBuilder();


        $builder->addDefinition($this->prefix('testService'))
            ->setClass('NameSpace\TestClass');
    }

}

config.neno

extensions:
    test: TestExtension

services:

    # Repositories
    studentsRepository: App\MainModul\Model\StudentsRepository
    personsRepository: App\MainModul\Model\PersonsRepository
    addressesRepository: App\MainModul\Model\AddressesRepository
    countriesRepository: App\MainModul\Model\CountriesRepository

    testService:
        setup:
            - "$service->addModel(?,?)"('1',@studentsRepository)
            - "$service->addModel(?,?)"('2',@personsRepository)
            - "$service->addModel(?,?)"('3',@addressesRepository)
            - "$service->addModel(?,?)"('4',@countriesRepository)

I am doing something wrong?

3 years ago

jiri.pudil
Member | 838
+
0
-

The prefix method in CompilerExtension prefixes the service name with the name of the extension as registered in extensions section, i.e. in your case it is test.testService

3 years ago

holantomas
Backer | 56
+
0
-

It's working. Thanks! Never read about that.

EDIT: This topic can be closed.

Last edited by holantomas (2016-04-04 13:18)