@Spooky:
Vielen Dank für den Hinweis. Das hat mich weitergebracht. Mit dem Compiler Pass habe ich es versucht. Mein Eintrag wurde jedoch in der Dependency Extension Klasse des eigenen Bundles immer wieder überschrieben, eigentlich logisch.
Ich habe die ganze Logik nun in die Dependency Extension Klasse verschoben. Hier hat es funktioniert.
Hier mein Code, wenn jemand anderes vor dem selben Problem steht.
Lg marko
Code:
# config/config.yml
foo:
bar: '* */2 * * *'
PHP-Code:
<?php
//src/DependencyInjection/VendornameMyExtension.php
declare(strict_types=1);
namespace Vendorname\MyBundle\DependencyInjection;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Extension\Extension;
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
class VendornameMyExtension extends Extension
{
/**
* {@inheritdoc}
*/
public function getAlias()
{
return Configuration::ROOT_KEY;
}
/**
* @throws \Exception
*/
public function load(array $configs, ContainerBuilder $container): void
{
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);
$loader = new YamlFileLoader(
$container,
new FileLocator(__DIR__.'/../Resources/config')
);
$loader->load('parameters.yml');
$loader->load('services.yml');
$loader->load('listener.yml');
$rootKey = $this->getAlias();
$container->setParameter($rootKey.'.cron_schedule', $config['cron_schedule']);
$this->addCronSchedule($container, $config);
}
/**
* @param ContainerBuilder $container
* @return void
*/
private function addCronSchedule(ContainerBuilder $container): void
{
$cronSchedule = $container
->getParameter('foo.bar')
;
$cron = $container
->findDefinition('Vendorname\MyBundle\Cron\ExampleCron')
;
$cron->clearTag('contao.cronjob');
$cron->addTag('contao.cronjob', [
'interval' => $cronSchedule,
]);
}
}