Ergebnis 1 bis 4 von 4

Thema: Contao Cron Schedule in Annotations per Parameter definieren

  1. #1
    Contao-Fan Avatar von markocupic
    Registriert seit
    06.12.2010.
    Ort
    Oberkirch (Schweiz)
    Beiträge
    660

    Standard Contao Cron Schedule in Annotations per Parameter definieren

    Hallo (Spooky)
    Wieder einmal gelange ich mit einer Frage ans Forum:
    Gehe ich richtig davon aus, dass es nicht/noch nicht möglich ist, den Cron Schedule (Annotations) mit einem Wert aus der Friendly Configuration meines Bundles zu definieren?

    Vielen Dank

    Liebe Grüsse

    Marko



    Code:
    # config/config.yml
    foo:
      bar: '* */2 * * *'

    PHP-Code:
    <?php

    declare(strict_types=1);

    namespace 
    App\Cron;

    use 
    Contao\CoreBundle\Cron\Cron;
    use 
    Contao\CoreBundle\ServiceAnnotation\CronJob;

    /**
     * @CronJob(%foo.bar%)
     */
    class ExampleCron
    {

        public function 
    __invoke(string $scope): void
        
    {
            
    // Do something
        
    }
    }
    Anfragen für bezahlten Support oder Extension-Programmierung via PN.

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.114
    Partner-ID
    10107

    Standard

    Evt. geht das mit einem Compiler Pass. Habe ich aber noch nie probiert.
    » sponsor me via GitHub or PayPal or Revolut

  3. #3
    Contao-Fan Avatar von markocupic
    Registriert seit
    06.12.2010.
    Ort
    Oberkirch (Schweiz)
    Beiträge
    660

    Standard

    @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 $configsContainerBuilder $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,
            ]);
        }
    }
    Anfragen für bezahlten Support oder Extension-Programmierung via PN.

  4. #4
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.114
    Partner-ID
    10107

    Standard

    Ja stimmt, das ist eh besser
    » sponsor me via GitHub or PayPal or Revolut

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •