# Controller wird weder aufgerufen noch geroutet

**URL:** <https://forum.shopware.com/t/controller-wird-weder-aufgerufen-noch-geroutet/103611>\
**Category:** Programmierung\
**Created:** [9. April 2024 um 09:05 UTC](https://forum.shopware.com/t/controller-wird-weder-aufgerufen-noch-geroutet/103611 "2024-04-09T09:05:53Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![thomas.kipp](https://avatars.discourse-cdn.com/v4/letter/t/b5e925/32.png) [@thomas.kipp](https://forum.shopware.com/u/thomas.kipp)\
**Post date:** [9. April 2024 um 09:05 UTC](https://forum.shopware.com/t/controller-wird-weder-aufgerufen-noch-geroutet/103611/1 "2024-04-09T09:05:54Z")

</div>

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:

```auto
?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

```auto
<?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

```auto
<?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

---

<div class="post-metadata">

**Author:** ![aggrosoft](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/aggrosoft/32/23875_2.png) [@aggrosoft](https://forum.shopware.com/u/aggrosoft)\
**Post date:** [9. April 2024 um 09:35 UTC](https://forum.shopware.com/t/controller-wird-weder-aufgerufen-noch-geroutet/103611/2 "2024-04-09T09:35:54Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![thomas.kipp](https://avatars.discourse-cdn.com/v4/letter/t/b5e925/32.png) [@thomas.kipp](https://forum.shopware.com/u/thomas.kipp)\
**Post date:** [9. April 2024 um 09:45 UTC](https://forum.shopware.com/t/controller-wird-weder-aufgerufen-noch-geroutet/103611/3 "2024-04-09T09:45:34Z")

</div>

(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!

---

<div class="post-metadata">

**Author:** ![aggrosoft](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/aggrosoft/32/23875_2.png) [@aggrosoft](https://forum.shopware.com/u/aggrosoft)\
**Post date:** [9. April 2024 um 09:53 UTC](https://forum.shopware.com/t/controller-wird-weder-aufgerufen-noch-geroutet/103611/4 "2024-04-09T09:53:08Z")

</div>

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

```auto
echo 'foo'; 
exit();

```

probiert?

---

<div class="post-metadata">

**Author:** ![thomas.kipp](https://avatars.discourse-cdn.com/v4/letter/t/b5e925/32.png) [@thomas.kipp](https://forum.shopware.com/u/thomas.kipp)\
**Post date:** [9. April 2024 um 09:57 UTC](https://forum.shopware.com/t/controller-wird-weder-aufgerufen-noch-geroutet/103611/5 "2024-04-09T09:57:30Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![R4M](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/r4m/32/9983_2.png) [@R4M](https://forum.shopware.com/u/R4M)\
**Post date:** [9. April 2024 um 12:07 UTC](https://forum.shopware.com/t/controller-wird-weder-aufgerufen-noch-geroutet/103611/6 "2024-04-09T12:07:57Z")

</div>

> [@thomas.kipp](#):
>
> Allerdings wurde das Plugin unter PHP 8.1 und unter Shopware 6.5 entwickelt.

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.

---

<div class="post-metadata">

**Author:** ![thomas.kipp](https://avatars.discourse-cdn.com/v4/letter/t/b5e925/32.png) [@thomas.kipp](https://forum.shopware.com/u/thomas.kipp)\
**Post date:** [9. April 2024 um 12:31 UTC](https://forum.shopware.com/t/controller-wird-weder-aufgerufen-noch-geroutet/103611/7 "2024-04-09T12:31:46Z")

</div>

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!

---

<div class="post-metadata">

**Author:** ![thomas.kipp](https://avatars.discourse-cdn.com/v4/letter/t/b5e925/32.png) [@thomas.kipp](https://forum.shopware.com/u/thomas.kipp)\
**Post date:** [10. April 2024 um 13:14 UTC](https://forum.shopware.com/t/controller-wird-weder-aufgerufen-noch-geroutet/103611/8 "2024-04-10T13:14:52Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![system](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/3X/2/9/29c7587ba660f00e4995d1743162782e5d6d8653.svg) [@system](https://forum.shopware.com/u/system)\
**Post date:** [10. Mai 2024 um 13:14 UTC](https://forum.shopware.com/t/controller-wird-weder-aufgerufen-noch-geroutet/103611/9 "2024-05-10T13:14:59Z")

</div>

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