Zitat von
Spooky
Die Funktion sollte dann in einen separaten Service ausgelagert werden und dann injected sich der Cronjob diesen Service zur Ausführung - und anderswo nutzt du dann diesen Service auch dementsprechend.
Guten Tag,
bin nun endlich dazu gekommen mir das Thema anzusehen
ich scheitere jedoch das ganze in ein Content Element oder Frontend Modul zu "injecten"
Bei Cronjobs klappt es bereits. Beim Content Element überhaupt nicht... hab einiges getestet, genau wissen was ich tu, tu ich aber noch nicht....
PHP-Code:
# src/MeinBundle/Resources/config/services.yaml
services:
_defaults:
autowire: true
autoconfigure: true
# Definition von test.service.database_update_service
test.service.database_update_service:
class: test\bbPWBxml\Service\DatabaseUpdateService
arguments:
- '@contao.framework'
- '@database_connection'
public: false
test\bbPWBxml\Cron\CronMinutely:
arguments:
- '@test.service.database_update_service'
tags:
- { name: contao.cronjob, method: '__invoke', interval: minutely }
test\bbPWBxml\Cron\CronHourly:
arguments:
- '@test.service.database_update_service'
tags:
- { name: contao.cronjob, method: '__invoke', interval: hourly }
test\bbPWBxml\Cron\CronDaily:
arguments:
- '@test.service.database_update_service'
tags:
- { name: contao.cronjob, method: '__invoke', interval: daily }
test\bbPWBxml\Module\PWBXmlUpdate:
arguments: ['@contao.framework', 'main'] # Falls notwendig
tags:
- { name: 'contao.content_element', category: 'includes', template: 'mod_pwbxmlloader' }
calls:
- [setDatabaseUpdateService, ['@test.service.database_update_service']]
das ContentElement:
PHP-Code:
<?php
namespace test\bbPWBxml\Module;
use test\bbPWBxml\Service\DatabaseUpdateService;
use Contao\Module;
use Contao\Model;
class PWBXmlUpdate extends Module
{
/**
* @var DatabaseUpdateService
*/
private $databaseUpdateService;
public function __construct(Model $model, $column = 'main')
{
parent::__construct($model, $column);
}
/**
* Setter-Methode für DatabaseUpdateService
*/
public function setDatabaseUpdateService(DatabaseUpdateService $databaseUpdateService)
{
$this->databaseUpdateService = $databaseUpdateService;
}
protected function compile()
{
echo 'test';
// Verwendung des DatabaseUpdateService
$this->databaseUpdateService->updateMediaTimestamp();
}
}
PS: Mittlerweile 4.13