Hallo,
ich versuche einen simplen Test-Cronjob zum laufen zu bringen, aber leider rührt sich nichts. Ich habe den verdacht, dass es mit der Benennung bzw. dem Aufruf der Aktion zu tun hat. Ich bin wirklich am Ende mit meinem Latein.
Der Test soll einfach nur alle 30 Sekunden die Zahl im Freitextfeld10 von Artikel 1 um eins inkrementieren.
Hier ist mein Setup, vielleicht kann mir einer von euch ja helfen. Ich wäre sehr dankbar:
Ordnerstruktur
| custom
| plugins
| CronTest
| Resources
- cronjob.xml
- CronTest.php
CronTest.php
namespace CronTest;
class CronTest extends \Shopware\Components\Plugin
{
public static function getSubscribedEvents()
{
return [
'Shopware_CronJob_Test' => 'onRun'
];
}
public function onRun($value='')
{
$articleRessource = \Shopware\Components\Api\Manager::getResource('article');
$article = $articleRessource->getOneByNumber(1);
if (!is_numeric($article["mainDetail"]["attribute"]["attr10"])) {
$num = 1;
} else {
$num = (int)$article["mainDetail"]["attribute"]["attr10"] + 1;
}
$updateArray = array(
"mainDetail" => array(
"attribute" => array(
"attr10" => $num
)
)
);
$articleRessource->updateByNumber(1, $updateArray);
}
}
cronjob.xml
CronTester
Shopware_CronJob_Test
true
30
true
Cron Einstellungen in den Grundeinstellungen:
------
Name: CronTester
Aktion: Test
Ergebnisdaten: [leer]
Letzte Ausführung: [leer][leer]
Nächste Ausführung: 24.03.2017 15:41
Intervall: 30
Aktiv:
Bei Fehler deaktivieren:
------
Ich habe das Plugin getestet. Mit einem Event wie „Enlight_Controller_Action_PostDispatchSecure_Frontend“ funktioniert es einwandfrei. Bei jedem Seitenladen wird der Wert im Freitext10 um 1 größer. Nur der Cronjob will nicht wie ich will.