$event->getPagelet()->addExtension

Hallo zusammen,

aktuell versuche ich ein ganz simples Plug-in zu schreiben. Es handelt sich hierbei einfach nur um ein extra Tab welches mit Files befüllt werden soll die auf dem Server abgelegt werden. 

Das Plug-in soll prüfen ob die Files vorhanden sind und wenn ja geladen werden. Jetzt hängt es leider bei mir an der Integrierung der Php Variable in twig. 
Ich habe eine Php Funktion die prüft ob die Datei existieren und gibt einen boolean zurück. Diesen wert hätte ich gerne im frontend zur verfügung. Aber aktuell meckert er bei der Extension (

 $event-\>getPagelet()-\>addExtension('fileDoesExist', true);

). 

 

Hier der Quellcode:

__________________________________________________________________________

<?php declare(strict_types=1);
namespace DriverTab\Storefront\Subscriber;
use Shopware\Core\Framework\DataAbstractionLayer\EntityRepositoryInterface;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Aggregation\CountAggregation;
use Shopware\Core\Framework\DataAbstractionLayer\Search\AggregationResult\CountResult;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter;
use Shopware\Storefront\Pagelet\Footer\FooterPageletLoadedEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class FooterSubscriber implements EventSubscriberInterface
{
    public static function getSubscribedEvents(): array
    {
        return [
            FooterPageletLoadedEvent::class => 'fileCheck' ]; } public function doSomething(){ return true; } public function fileCheck(FooterPageletLoadedEvent $event): void { $event-\>getPagelet()-\>addExtension('fileDoesExist', **true** ); 

\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_



&nbsp;



Fehlermeldung:  
  
 &nbsp;



Argument 2 passed to Shopware\Core\Framework\Struct\Struct::addExtension() must be an instance of Shopware\Core\Framework\Struct\Struct or null, boolean given, called in /app/custom/plugins/DriverTab/src/Storefront/Subscriber/FooterSubscriber.php on line 23



&nbsp;



Könnte mir jemand weiterhelfen?&nbsp;  
 Schöne Grüße :)

Noch ne kurze Info. Wenn man
 

 $event-\>getPagelet()-\>addExtension('fileDoesExist', true); durch 

 $event-\>getPagelet()-\>addExtension('fileDoesExist', null); ersetzt. Dann funktioniert es und wird auch angezeigt mit dem wert null. Ich will aber true oder 1.

Niemand? :smiley:

Ja, wenn du dir den Trait anschaust erwartet er ein Struct.

https://github.com/shopware/platform/blob/fb4bc791e185512bfde8cd0ea462b0cf527cf82f/src/Core/Framework/Struct/ExtendableTrait.php#L18

    /**
     * Adds a new extension struct into the class storage.
     * The passed name is used as unique identifier and has to be stored too.
     */
    public function addExtension(string $name, ?Struct $extension): void
    {
        $this->extensions[$name] = $extension;
    }

 

1 Like

Hi, danke für deine Rückmeldung :smiley: Ich teste das gleich mal

Zur info falls jemand noch das Problem haben sollte, durch new ArrayEntity(‘id’ => ‘123’) konnte ich es lösen. Weiß nicht ob es der beste weg ist aber es funktioniert zumindest :slight_smile: Namespace muss auch angegeben werden.

 

1 Like