<?php declare(strict_types=1);
namespace B2BB2C\Storefront\Controller;
use DateInterval;
use DateTime;
use Throwable;
use Shopware\Core\System\SalesChannel\SalesChannelContext;
use Shopware\Storefront\Controller\StorefrontController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Shopware\Core\Framework\Context;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter;
use B2BB2C\classes\Paths;
#[Route(defaults: ['_routeScope' => ['storefront']])]
class SwitchingController extends StorefrontController {
/*
public function showExample(Request $request, SalesChannelContext $context): Response {
return $this->renderStorefront('@WtB2BB2CSwitcher/storefront/page/example.html.twig', [
'example' => 'Hello world'
]);
}
*/
#[Route(path: '/wt/shop-switch/', name: 'wt.shop-switch', defaults: ["XmlHttpRequest" => true, "csrf_protected" => false], methods: ['GET', 'POST'])]
public function switch(Request $request, SalesChannelContext $context): void {
try {
print_r("Controller aufgerufen");
dd();
...
Wie bereits erwähnt, lokal klappt da so, aber nicht live. Was läuft da schief?
Ich benutze Shopware 6.5.X Live ist aktuellste Shopware Version am Start…
Auf einem anderen LIVE Server(dedizierter Server) klappt der Aufruf auch. Ich vermute ein Problem bei Servern, die unter einer virtualisierten Ebene laufen…
Das heißt lokal Shopware 6.5 und live Shopware 6.6?
Das funktioniert natürlich dann nicht, da es sich um ein Major-Udpate mit Breaking-Changes handelt. Unter anderem Update von Symfony 6.4 auf Symfony 7. Anbei die Upgrade Guides:-
Oh. Vielen Dank für diesen Typ. Ich kann zwar erst morgen testen, ob das funktioniert, aber bereits jetzt meinem Ärger Luft machen:
Erst wurde vor Shopware 6.4.1 speziell geroutet, und jetzt angeblich schon wieder. Dass von Shopware5 zu Shopware6 der Code umgekrempelt wurde mag noch angehen, aber von 6.4 auf 6.6 gleich zweimal derart wichtige Komponenten umzuändern, nervt gewaltig…
Die services.xml hat sich nicht verändert. So sieht der Controller jetzt aus:
<?php declare(strict_types=1);
namespace B2BB2C\Storefront\Controller;
use DateInterval;
use DateTime;
use Throwable;
use Shopware\Core\System\SalesChannel\SalesChannelContext;
use Shopware\Storefront\Controller\StorefrontController;
use Symfony\Component\HttpFoundation\Request;
/* This class is outdated up to Shopware 6.6. Use Symfony\Component\Routing\Attribute\Route; instead
use Symfony\Component\Routing\Annotation\Route;
*/
use Symfony\Component\Routing\Attribute\Route;
use Shopware\Core\Framework\Context;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter;
use B2BB2C\classes\Paths;
#[Route(defaults: ['_routeScope' => ['storefront']])]
class SwitchingController extends StorefrontController {
#[Route(path: '/wt/shop-switch/', name: 'wt.shop-switch', defaults: ["XmlHttpRequest" => true, "csrf_protected" => false], methods: ['GET', 'POST'])]
public function switch(Request $request, SalesChannelContext $context): void {
try {
print_r("Controller aufgerufen");
dd();
Shopware bringt jedes Jahr eine Major-Version heraus. In dieser werden - sinnvollerweise - auch eingesetzte Frameworks/Bibliotheken auf den neuesten Stand gebracht. Das heißt, du musst den jährlichen Aufwand einkalkulieren müssen, diese Änderungen a) zu analysieren und b) deine Programmierung entsprechend anzupassen. Das kann dann je nach Umfang der Individualisierung zwischen ein paar Stunden und ein paar Tagen/Wochen Aufwand bedeuten.
Einen Shop online zu stellen und zwei Jahre ohne Updates vor sich hindümpeln zu lassen, funktioniert heute nicht mehr. Und wenn ein Shopsystem wie Shopware sinnvollerweise de faco Standards wie Symfony oder Vue.js verwendet, müssen diese halt auch kontinuierlich nachgezogen werden.
So hart es klingt und ist: Hier macht Shopware alles richtig. Du musst also nicht genervt auf Shopware sein, sondern auf die einfach extrem schnelllebige IT-Umgebung. Bin ich auch manchmal und sehne hin und wieder einen „ehrlichen“ Holz-Handwerksberuf herbei. Bringt aber alles nichts.
Als Shopware-Entwickler - bzw. allgemein einem Entwickler in einem einigermaßen komplexem Webumfeld - musst du dich dieser Thematik einfach stellen. Das heißt um das Wissen über Symfony, Vue.js und Co. (inklusive Versionsverlauf und Upgrades) wirst du nicht herumkommen.
prinzipiell stimme ich Dir zu. Allerdings könnte man das ja auch in der Doku vermerken. Da ist aber nur die Routing Änderung bzgl. Shopware6.4 auf Shopware6.5 vermerkt. Und warum diese Route hier nicht funktioniert, weiß ich zwar mittlerweile, aber dokumentiert ist das auch nirgends. Zumindest finde ich es nicht.
So funktioniert das Routing jedenfalls nicht(hat es aber noch vor Shopware6.6)