Shop-Id des ausgewählten Shops ermitteln

Hallo zusammen,

ähnliche Fragen zu dem Thema wurden auch schon mal gestellt, aber bei mir hat von den Vorschlägen noch nichts geklappt.

Ich habe 2 Shops. 1 Hauptshop und 1 Subshop.
Wenn ich mein Plugin bearbeite, dann habe ich jeweils 1 Register für den jeweiligen Shop.
Wenn ich auf „Speichern“ klicke, dann soll u.a. die aktuelle Shop-Id ausgelesen werden.

Bis jetzt habe ich das so umgesetzt:

$shopRepository = Shopware()->Models()->getRepository('Shopware\\Models\\Shop\\Shop');
$shop = $shopRepository->getActiveDefault();

echo $shop->getId();

Hier liefert er mir aber immer nur die ID 1 zurück, da er mir mit der Methode „getActiveDefault()“ immer den Standard-Shop zurück liefert. Ich benötige aber den ausgewählten Shop. Gibt es dafür noch eine bestimmte Methode oder muss ich da anders an die Sache heran gehen.

 

Gruß Heiko

 

Ich weiss nicht ob ich Dich richtig verstehe, meinst Du :

Shopware()->Shop()->getId()

 

Servus zusammen,

also wenn ich 

Shopware()->Shop()->getId()

eingebe, dann erhalte ich die folgende Fehlermeldung

Fatal error: Uncaught Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException: You have requested a non-existent service..

Bei dem Code von Werner stößt er auch auf einen Fehler. Dem fehlt da auch noch irgendetwas.

Mein Code sieht aktuell folgendermaßen aus:

pluginName = $pluginName;
        $this->pluginDir = $pluginDir;
        
    }



    public static function getSubscribedEvents()
    {
        return array(
            'Shopware_Controllers_Backend_Config_After_Save_Config_Element' => 'saveConfig'
            
        );
    }


    public function saveConfig(\Enlight_Event_EventArgs $args) {              

        if (!$this->lastSave) {
          $shopRepository = Shopware()->Models()->getRepository('Shopware\\Models\\Shop\\Shop');
          //Id des Standard-Shops
          $shopId = $shopRepository->getActiveDefault()->getId();
          
          //Hier soll die aktuelle Shop-ID ausgelesen werden
          echo Shopware()->Shop()->getId();
          
          
        }

    }
    
        
}

 

Hallo Werner,

danke für Deine Antwort.
Bei mir haut das irgendwie noch nicht hin. Er stößt immer auf eine Fehlermeldung.

Mir fehlt in dem Bereich auch sehr viel Wissen, so dass ich im Moment gar nicht so genau weiss, was ich da eigentlich mache :wink: und wo und wie ich was machen muss.

Auslesen will ich die ID im Subscriber. Kennst Du zufällig ein Plugin, wo das auch umgesetzt wurde, so daß ich mir das mal ansehen kann, wie das funktioniert?

 

Viele Grüße

 

Heiko

versuch mal:

public function saveConfig(\Enlight_Event_EventArgs $args) { 

foreach ($args->get('element')->getValues() as $value) {
    var_dump(Shopware()->Models()->toArray($value));die;
}

}

 

Servus,

funktioniert leider auch noch nicht so ganz.
Ich bekomme immer das gleiche Array zurück geliefert. Egal welcher Shop gerade aktiv ist.

array(5) {
  ["id"]=>
  int(7157)
  ["shopId"]=>
  NULL
  ["value"]=>
  NULL
  ["element"]=>
  array(1) {
    ["id"]=>
    int(1270)
  }
  ["shop"]=>
  array(1) {
    ["id"]=>
    int(1)
  }
}

 

Viele Grüße

 

Heiko

in $value->getShop()->getId() steht die aktuelle Shop id von der Config. Können ja mehrere in einem PullRequest sein. Im Backend gibt es sowas wie Shop Context nicht.