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.
Lesezeichen