Contao-Camp 2024
Ergebnis 1 bis 3 von 3

Thema: InsertTag in Service verwenden & Consolen Cronjob richtig registrieren

  1. #1
    Contao-Nutzer
    Registriert seit
    07.12.2019.
    Beiträge
    147

    Standard InsertTag in Service verwenden & Consolen Cronjob richtig registrieren

    Hallo Community,

    ich habe folgende Fragen:
    1. InsertTag in einem Service verwenden?

    Ich habe eine Erweiterung geschrieben und verwende da den Standard Aufbau von Symfony: src/Service/..
    Nun bräuchte ich in einem meiner Services die Möglichkeit die URL der Contao Installation rauszufinden.

    Folgendes hat leider nicht funktioniert:
    PHP-Code:
    var_dump(InsertTags::replaceInsertTags('{{env::url}}')); 
    Ausgabe: string(8) "http://:"

    Ich dachte es liegt vielleicht daran, dass das Contao-Framework noch nicht initialisiert wurde; Also noch das versucht:
    PHP-Code:
    $this->contaoFramework->initialize();
    $insertTags $this->contaoFramework->createInstance('InsertTags');
    var_dump($insertTags::replaceInsertTags('{{env::url}}')); 
    Aber gleiche Ausgabe erhalten: string(8) "http://:"

    Wie kann ich in diesem Service von mir auf die env::url zugreifen?
    Der Service wird von einem consolen command aufgerufen -> Falls das noch eine wichtige Information ist.




    2. Consolen Cronjob richtig registrieren?

    In meiner Erweiterung möchte ich einen Cronjob verwenden, der mir immer wieder nach einer bestimmten Zeit ein consolen-command aufruft:
    Den Cronjob wollte ich dynamisch über die config.php registrieren lassen -> Damit ein Benutzer hier selbst über das Backend über ein Select-Feld die Häufigkeit auswählen kann.
    // contao/config.php
    PHP-Code:
    $myModelmyModel::findAll()->fetchAll()[0];
    if(
    $myModel['timespan']) {
        
    $GLOBALS['TL_CRON'][$myModel['timespan']][] = [MyCron::class, 'execute'];

    // In der MyCron.php sollte dann das consolen command: myextension:generate-change ausgeführt werden

    PHP-Code:
    <?php

    class MyCron
    {
        public function 
    execute(): void
        
    {
            
    //todo call command
        
    }
    }
    Wie kann ich hier bewerkstelligen, dass der Cronjob meinen consolen command ausführt?
    Manuell kann ich diesen ausführen, da funktioniert alles.

    Würde mich über Antworten und Vorschläge freuen!

    Vielen Dank bereits.

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

    Standard

    Zitat Zitat von Fonjensi Beitrag anzeigen
    Nun bräuchte ich in einem meiner Services die Möglichkeit die URL der Contao Installation rauszufinden.
    Das machst du über den RequestStack Service (wenn du den Request nicht schon anderweitig hast), nicht über Insert Tags.
    » sponsor me via GitHub or PayPal or Revolut

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

    Standard

    Zitat Zitat von Fonjensi Beitrag anzeigen
    2. Consolen Cronjob richtig registrieren?
    Wie du CronJobs registrierst findest du in der Dokumentation: https://docs.contao.org/dev/framewor...ring-cron-jobs

    Am einfachsten mit Annotations.
    » 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
  •