Controller wird weder aufgerufen noch geroutet

Hallo, schreibe ein Plugin für Shopware 6.2.3.1 und PHP 7.2
Folgender Code führt immer zu einem 404 Error. Habe folgendes gemacht:
(1) das Plugin erst installiert, dann aktiviert
(2)den Cache geleert
Nix hilft. Bin mit meinem Latein am Ende. Unter meinem localhost funktioniert alles. Allerdings wurde das Plugin unter PHP 8.1 und unter Shopware 6.5 entwickelt. Die entsprechenden Unterschiede sind im Code als Kommentar deklariert. Hier zunächst der Controller Code:

?php declare(strict_types=1);

namespace WtUpdateProducts\Storefront\Controller;

use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
use Shopware\Core\System\SystemConfig\SystemConfigService;
use Shopware\Storefront\Controller\StorefrontController;
//following classes have been depreceated and should only be used prior to Shopware 6.4.11.0
use Symfony\Component\Routing\Annotation\Route;
use Shopware\Core\Framework\Routing\Annotation\RouteScope;
/*use following class up to 6.5 major version
use Symfony\Component\Routing\Attribute\Route;
*/
use Shopware\Storefront\Page\GenericPageLoaderInterface;
use Shopware\Core\System\SalesChannel\SalesChannelContext;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Shopware\Core\Framework\Context;
use WtUpdateProducts\classes\Paths;
use WtUpdateProducts\classes\ReadOutXML;
use WtUpdateProducts\classes\Database;
use DateTime;
use Exception;

/*  Use following Routing up to Shopware 6.5 major version
#[Route(defaults: ['_routeScope' => ['storefront']])]
*/

/**
 * @RouteScope(scopes={"storefront"})
 */
class UpdateController extends StorefrontController
{
    /*  usde following code up to php 7.4
    private GenericPageLoaderInterface $genericPageLoader;
    private SystemConfigService $systemConfigService;
    private EntityRepository $mediaRepository;
    private Database $db;
    */
    private $genericPageLoader;
    private $systemConfigService;
    private $mediaRepository;
    private $db;
    private const ROOTFILE1 = 'Artikel.xml';
    private const ROOTFILE2 = 'SalesPrice.xml';


    public function __construct(GenericPageLoaderInterface $genericPageLoader, SystemConfigService $systemConfigService, EntityRepository $mediaRepository, Database $db)
    {
        //create Dependency Injections,which are based on services.xml
        $this->genericPageLoader = $genericPageLoader;
        $this->systemConfigService = $systemConfigService;
        $this->mediaRepository = $mediaRepository;
        $this->db = $db;
    }


    /*  Use following Routing up to Shopware 6.5 major version
    #[Route(path: 'wt/update', name: 'frontend.update', methods: ['POST', 'GET'])]
    */

    /**
     * @Route("/wt/update", name="frontend.update", methods={"GET","POST"}, defaults={"XmlHttpRequest"=true, "csrf_protected"=false})
     */
    public function showUpdateFormular(Request $request, SalesChannelContext $salesChannelContext, Context $context): Response
    {}

hier die routes.xml

<?xml version="1.0" encoding="UTF-8" ?>

<routes xmlns="http://symfony.com/schema/routing"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://symfony.com/schema/routing
        https://symfony.com/schema/routing/routing-1.0.xsd">

    <!--<import resource="../../Storefront/Controller/**/*Controller.php" type="annotation" />-->
    <import resource="../../Storefront/Controller/UpdateController.php" type="annotation" />
</routes>

und hier noch die services.xml

<?xml version="1.0" ?>
<container xmlns="http://symfony.com/schema/dic/services"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
    <services>
        <service id="WtUpdateProducts\Storefront\Controller\UpdateController" public="true">
            <argument type="service" id="Shopware\Storefront\Page\GenericPageLoader"/>
            <argument type="service" id="Shopware\Core\System\SystemConfig\SystemConfigService"/>
            <argument type="service" id="media.repository"/>
            <argument type="service" id="WtUpdateProducts\classes\Database"/>
            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
            <call method="setTwig">
                <argument type="service" id="twig"/>
            </call>
        </service>
        <service id="WtUpdateProducts\classes\Database">
            <argument type="service" id="product.repository"/>
            <argument type="service" id="product_price.repository"/>
        </service>
    </services>
</container>

Völlig verwirrt bin ich von dem Umstand, dass ein die(); im Konstruktor keinerlei Auswirkungen hat. Wie es scheint, wird der Controller erst gar nicht aufgerufen, obgleich ich das Plugin im Backend konfigurieren kann. Im Backend funktioniert also alles! Ein Aufruf der Url {domain_url}/wt/update im Frontend führt immer ohne Angabe einer Fehlermeldung in der Log zu einem Rendering der 404 Seite

Hast du den Kommentar da oben in dem das Route Attribut für die andere Version steht mal entfernt? Nicht dass sich das irgendwie beißt zwischen den System?

Was zeigt ein bin/console debug:router

(1) Dein Vorschlag der Entfernung der Kommentare hatte ich bereits ausprobiert, ohne Erfolg. Hatte es fürs Forum halt wieder integriert
(2) ein php bin/console debug:router listet mir jede Menge Routing-URLs auf, auch die Meinige!

Und wie bereits erwähnt: Ein dd(); im Konstruktor hat keinerlei Auswirkungen!

Das ist ungewöhnlich, wenn er es im debug:router listet sollte das auch durchgehen.

Hast du mal spaßeshalber direkt in der showUpdateFormular Methode einen

echo 'foo'; 
exit();

probiert?

Hab ich ausprobiert. Bewirkt aber nix. wie bereits erwähnt: Bereits ein die(); im Konstruktor würgt das Skript nicht ab. Auch ein die(); in der public/index.php würgt den Shop nicht ab. Wenn ich die public/index.php hingegen umbenenne, wird der Shop nicht mehr geroutet. Was ist da nur los?

Wird vielleicht nicht damit zu tun haben, aber ich würde hier mit mind. PHP 8.2 arbeiten, was ja auch Vorrausetzung bei SW 6.5 ist.

Nun, das Problem tritt auf unter Shopware6.2 und unter PHP 7.2 Entwickelt wurde es unter Shopware6.5 und PHP8.1. Die Unterschiede bzgl. der Codierung sind wie bereits erwähnt im Code durch Kommentare ersichtlich. Das bin/console debug:router zeigt die Route auf, allerdings führt sie halt zu einem 404 Aufruf!

Weiß jetzt, worin das Problem bestand: Shopware6 ist auf dem Live System derart auf Caching eingestellt, dass das eigentlich korrekte Routing nicht erfasst wurde. Erst ein Unterbinden des Cachings in der .htaccess und ein Neustart des Webservers beseitigte das Problem

Dieses Thema wurde automatisch 30 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Antworten mehr erlaubt.