Extension služby s parametrem definované v neonu
- Jan Mikeš
- Člen | 771
Ahoj!
Chtěl bych registrovat služby (přidávat jejich definice) v extension
pomocí neon configu, namísto php
$builder->addDefinition()
.
Narazil jsem ale na problém, pokud mám služby s parametry.
V extension mám následující kód:
public function loadConfiguration(): void
{
$builder = $this->getContainerBuilder();
$config = $this->loadFromFile(__DIR__ . '/extension.neon');
if (isset($config['parameters'])) {
$this->validateConfig($config['parameters']);
}
$this->compiler::loadDefinitions(
$builder,
$config['services'],
$this->name
);
}
A v extension.neon
:
parameters:
apiKeys:
googleMaps: 'xyz'
services:
- GoogleMapsGeocoder(%apiKeys.googleMaps%)
Jenže toto mi vyhodí chybu
Missing parameter 'apiKeys.googleMaps'.
Pokud si tam nechám parameters a definici služby přesunu zpět do PHP:
$builder->addDefinition($this->prefix('geocoder'))
->setType(GoogleMapsGeocoder::class)
->setArguments([
$this->config['apiKeys']['googleMaps']
]);
S tímto vše funguje.
Dotaz tedy zní, jak dokážu v neonu definovat tuto třídu a říci jí, aby si vzala ten parametr? :-)
- CZechBoY
- Člen | 3608
Asi si budeš muset udělat novej ContainerBuilder pro každej neon soubor. Parametry se totiž tahaj z ContainerBuilderu https://github.com/…Compiler.php#L281 a ten o tvých parametrech v extension.neon neví.