Controller Route und Kategorie-Name identisch

Im Backend habe ich in Kategorie eine mit „externer Link“ auf /styling angelegt und inaktiv.

Dann habe ich meine Theme mit Controller weiter entwickelt, mit einer Route auf /styling

#[Route(path: '/styling', name: 'frontend.styling.default', defaults: ['_locale' => 'de'])]

Das funktionierte auch, bis ich die Kategorie aktiviert habe.

Jetzt erscheint aber weder meine route mit dem eigenen Template (404), noch erscheint im Hauptmenü die angelegt Kategorie.

Wie geht man hier vor?

Danke und Gruss

Auf gut Glück geraten: gebe der Kategorie eine neue SEO-URL und lösche die „alte“ SEO-URL-Weiterleitung aus der Datenbank.

@R4M hat vollkommen Recht, habe das „externe URL“ überlesen. Da sollte nichts angelegt werden. Kann dennoch sein, dass du die Kategorie vorher mal hattest und die URL dadurch in den SEO-Urls gelandet ist.

Ansonsten SEO-URL-Index neu aufbauen und Cache leeren.

1 „Gefällt mir“

Möglich das ich falsch liege, aber hier sollte in der Tabelle „seo_url“ keine URL mit „/styling“ enthalten sein.

1 „Gefällt mir“

Danke für die Hilfe, für die URL mit /styling funktioniert es

Leider funktioniert das nicht für die anderen Routes, aber erst seit kurzem.

Der Sprachwechsler wenn man sich direkt auf der /styling oder /en/styling Seite befindet macht:

  • /fr/styling?_locale=fr-FR - Seite lädt
  • /it/styling ?_locale=it-IT - Seite lädt

Wenn man jedoch den richtigen Link in der Navigation klickt, dann kommt:

  • /fr/stilisme - 404
  • /fr/stilo - 404

Im Controller wurde das so geregelt:

    #[Route(path: '/styling', name: 'frontend.styling.default', defaults: ['_locale' => 'de'])]

    // Routen für andere Sprachen mit Präfix
    #[Route(path: '/fr/stylisme', name: 'frontend.styling.fr', defaults: ['_locale' => 'fr'])]
    #[Route(path: '/it/stilo', name: 'frontend.styling.it', defaults: ['_locale' => 'it'])]
    #[Route(path: '/en/styling', name: 'frontend.styling.en', defaults: ['_locale' => 'en'])]

In der DB seo_urls gibt es keine Einträge zu stylisme, stilo oder styling

Hat jemand eine idee?

hier noch der ganze Controller:

<?php declare(strict_types=1);

namespace SwagBasicExampleTheme\Storefront\Controller;

use Doctrine\DBAL\ArrayParameterType;
use Doctrine\DBAL\Connection;
use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter;
use Shopware\Core\Framework\Uuid\Uuid;
use Shopware\Core\System\SalesChannel\SalesChannelContext;
use Shopware\Storefront\Controller\StorefrontController;
use SwagBasicExampleTheme\Storefront\Page\Example\ExamplePageLoader;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;

#[Route(defaults: ['_routeScope' => ['storefront']])]
class StylingController extends StorefrontController
{
    private string $allowedSalesChannelId;
    private Connection $connection;
    private ExamplePageLoader $examplePageLoader;

    public function __construct(
        string $allowedSalesChannelId,
        Connection $connection,
        ExamplePageLoader $examplePageLoader
    ) {
        $this->allowedSalesChannelId = $allowedSalesChannelId;
        $this->connection = $connection;
        $this->ExamplePageLoader = $examplePageLoader;
    }
    // Route für Deutsch (ohne Sprachpräfix)
    #[Route(path: '/styling', name: 'frontend.styling.default', defaults: ['_locale' => 'de'])]

    // Routen für andere Sprachen mit Präfix
    #[Route(path: '/fr/stylisme', name: 'frontend.styling.fr', defaults: ['_locale' => 'fr'])]
    #[Route(path: '/it/stilo', name: 'frontend.styling.it', defaults: ['_locale' => 'it'])]
    #[Route(path: '/en/styling', name: 'frontend.styling.en', defaults: ['_locale' => 'en'])]
    public function showStyling(Request $request, SalesChannelContext $context): Response
    {
        $page = $this->ExamplePageLoader->load($request, $context);

        $languageId = $context->getLanguageId();

        $sql = "SELECT....";


        $styling = $this->connection->fetchAllAssociative($sql);

        return $this->renderStorefront('@SwagBasicExampleTheme/storefront/page/styling/styling.html.twig', [
            'styling' => $styling,
            'page' => $page
        ]);
    }
}

Danke und Gruss


Hier noch die Kategorie. z.b. Französisch

Sieht hier etwas anders aus: Routing (Symfony Docs)

1 „Gefällt mir“

Danke für den Link, werde ich mir anschauen. Sieht aber irgendwie identisch aus, bis auf dass es als array zusammengefasst ist. aber ich schaue mal rein.

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