Neu Shop 5.4 - Plugin läuft nicht mehr "class EventDispatcher is not available"

John

Sehr aktives Mitglied
3. März 2012
4.215
1.088
Berlin
Hi,

ich habe vor einer Weile mal ein Mini-Plugin geschrieben, das im wesentlichen so aussieht, um Code des Superchat Chats zu integrieren:

Code:
<?php declare(strict_types=1);

namespace Plugin\jps_superchat;

use Illuminate\Support\Collection;
use JTL\Catalog\Category\Kategorie;
use JTL\DB\ReturnType;
use JTL\Events\Dispatcher;
use JTL\Plugin\Bootstrapper;
use JTL\Shop;
use JTL\Smarty\JTLSmarty;
use stdClass;

/**
 * Class Bootstrap
 * @package Plugin\jtl_test
 */
class Bootstrap extends Bootstrapper
{
    public function boot(\EventDispatcher $dispatcher) {
        $dispatcher->listen(
            'shop.hook.' . HOOK_SMARTY_OUTPUTFILTER,
            function() {
                $plugin = $this->getPlugin();
                if ($plugin->getConfig()->getValue('isActive') === 'Y') {
                    $AppKey = $plugin->getConfig()->getValue('AppKey');
                    $SuperChat = "<script src='https://widget.superchat.de/snippet.js?applicationKey=" . $AppKey . "' referrerpolicy='no-referrer-when-downgrade'></script>";
                    pq('body')->append($SuperChat);
                }
            }
        );
    }
}

Mit Shop 5.4 kommt es zum Fehler:
Fatal error: Could not check compatibility between Plugin\jps_superchat\Bootstrap::boot(EventDispatcher $dispatcher) and JTL\Plugin\Bootstrapper::boot(JTL\Events\Dispatcher $dispatcher), because class EventDispatcher is not available in /www/htdocs/[schnipp]plugins/jps_superchat/Bootstrap.php on line 20
Leider bin ich wirklich unfit in PHP und möchte mich auch nicht deswegen groß hinter hängen.
Kann mir jemand kurz sagen, was zu ändern ist?

Viele Grüße

John
 

elevennerds.de

Sehr aktives Mitglied
23. September 2015
1.235
212
Ändere
Code:
public function boot(\EventDispatcher $dispatcher) {

zu

Code:
public function boot(Dispatcher $dispatcher) {

Du willst ja diese Klasse nutzen: JTL\Events\Dispatcher
 

John

Sehr aktives Mitglied
3. März 2012
4.215
1.088
Berlin
Danke, @elevennerds.de , das funktionierte nicht, ging aber in die richtige Richtung.

So läuft es wieder:

Code:
    public function boot(Dispatcher $dispatcher): void
    {
        parent::boot($dispatcher);
        ...
    }
 
  • Gefällt mir
Reaktionen: ecki

Ähnliche Themen