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:
$myModel= myModel::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.