Plugin Routing fehlerhaft?

Hey ich habe gerade auf meiner Demo-Seite die URL vom SalesChannel gewechselt und mir ist aufgefallen, dass meine Plugin-Controller alle auf die Root-URL zugreifen wollen.

Also kurz gesagt… Soll:

domain.de/sales-channel-x/sign-in

Ist:

domain.de/sign-in

Bekomme ach dazu eine entsprechende Fehlermeldung:

Fatal error: Uncaught Shopware\Storefront\Framework\Routing\Exception\SalesChannelMappingException: Unable to find a matching sales channel for the request: https://domain.de/sign-in". Please make sure the domain mapping is correct. in /.../vendor/shopware/storefront/Framework/Routing/RequestTransformer.php:60 Stack trace: 
#0 /.../public/index.php(71): Shopware\Storefront\Framework\Routing\RequestTransformer->transform(Object(Symfony\Component\HttpFoundation\Request)) 
#1 {main} thrown in /..../vendor/shopware/storefront/Framework/Routing/RequestTransformer.php on line 60

In meinem Fall geht es um die URL die durch den namen (der im Controller definiert wurde) in Twig erstellt wird…

twig

...

controller methode

  /**
     * @Route("/sign-in", name="moorl.sign-in", methods={"POST"})
     */
    public function getAuthorizationUrl(Request $request, SalesChannelContext $context): Response
    {
      ...
    }

Hab ich irgendetwas flasch gemacht?

Storefront API?

@Route("sales-channel-api/v1/foo", name="foo.bar, methods={"POST"})

 

@Shopwareianer schrieb:

Storefront API?

@Route(„sales-channel-api/v1/foo“, name="foo.bar, methods={„POST“})

 

MIt der API hab ich es noch nicht probiert! Aber die Formular-Controller aus dem Core folgen dem selben Prinzip und dort gibt es keinen Routung-Fehler.  

 

 

Hallo @Moorleiche‍,

du musst das Routing für deine Controller erst registrieren. Dann sollte es auch mit jeder beliebigen Route klappen.
Auch wenn wir natürlich davon abraten ungesicherte Routen ins System zu bringen.
Wie du dein Routing registrierst kannst du hier finden.

Grüße Sebastian

@Seg schrieb:

Hallo @Moorleiche‍,

du musst das Routing für deine Controller erst registrieren. Dann sollte es auch mit jeder beliebigen Route klappen.
Auch wenn wir natürlich davon abraten ungesicherte Routen ins System zu bringen.
Wie du dein Routing registrierst kannst du hier finden.

Grüße Sebastian

Hallo Sebastian,

was meinst du mit ungesicherten Routen im System? Ich sehe gerade keine Alternativen dazu. Gibt es einen Shopware Controller, der generell alle Form-Submits abfängt und als Event bereit stellt? Habe ich auch als Public-User auf dem Storefront eine Authentifizierung?

Die Doc habe ich befolgt, die Routes funktionieren auch, nur nicht wenn ich die Root-Url des SalesChannels wechsle.

Das Problem ist aber aktuell nur auf der EA1.1, ich hab gesehen, dass sich da was getan hat (RouteScopes etc)… Werde das mal im Blick behalten :stuck_out_tongue:

 

 

 

Hallo Zusammen, 

ich habe den gleichen Fehler aber bisher nichts am System verändert. Nur SW6 aufgesetzt. Backend funktioniert auch nur das Frontend nicht.

Uncaught Shopware\Storefront\Framework\Routing\Exception\SalesChannelMappingException: Unable to find a matching sales channel for the request: …

Ich hab auch den gleichen Fehler und bis dato noch keine Lösung gefunden, kann jemand weiterhelfen?

Jede Domain muss zum Verkaufskanal hinzugefügt werden. Administration -> Verkaufskanal -> Domain hinzufügen

Oh ja ich habs… :wink:

Eine Variante der URL war noch nicht registriert!

1000 Dank Kiss

Moin, das Thema ist immernoch nicht solved.

Ich habe nun das Problem, dass ich bei Mehrsprachigen Formularen unter verschiedenen SalesChannelDomains mit der Twig Funktion “path” weiterhin nicht die richtige Controller URL bekomme, deshalb is die LanguageId aus dem Context falsch. 

Beispiel:

 path('frontend.cart.offcanvas')

path(‘egal.welcher.custom.controller’)

Also kurz gesagt: Nach 12 Monaten ist der Fehler nicht behoben - oder ich muss etwas grundlegendes übersehen haben und weis nicht was.

Lösungen???

path() alleine reicht nicht - der ist immer relativ. Du musst die sales channel domain vorweg setzen.

Viele Grüße
https://www.digitvision.de

1 „Gefällt mir“

url('frontend.cart.offcanvas')

1 „Gefällt mir“
 {{ url('moorl-form-builder.fire', {'formId': form.id}) }}

http://192.168.33.10/moorl-form-builder/fire/b33a7224601b4bbe95f98a5fd19fe60a

 {{ path('moorl-form-builder.fire', {'formId': form.id}) }}

/moorl-form-builder/fire/b33a7224601b4bbe95f98a5fd19fe60a

 {{ seoUrl('moorl-form-builder.fire', {'formId': form.id}) }}

http://192.168.33.10/de/moorl-form-builder/fire/b33a7224601b4bbe95f98a5fd19fe60a

@EikeBrandtWarneke‍ Die Urls im Core, die durch path generiert werden sind auch allesamt relativ - trotzdem wird der Part der aktiven SalesChannelDomain dort mit beachtet

@AlexGalax‍ Danke für den entscheidenen Hinweis, url() geht nicht -> aber seoUrl() liefert ein brauchbares Ergebnis. Damit ist mir fürs Erste geholfen.

Trotzdem sollte es doch trotzdem auch mit path() funktionieren

Viele Grüße

Philipp

 

 

dann mach doch mal ein Ticket auf, damit in einem Jahr nicht wieder jemand vor dem selben Problem steht Halo

Das Thema wird seitens Shopware gekonnt ignoriert. Auch in Shopware 6.4 hat sich nichts geändert - aber von den Plugin Entwicklern scheine ich der Einzige zu sein, der darauf hinweist? Es ist nun ein weiteres Routing-Problem dazu gekommen. Geht hierbei nun um redirects, die von einem Controller ausgehen:

Ich stoße halt immer wieder auf diese Probleme, hauptsächlich weil die Qualitätskontrolle für die Shopware Plugins mich immer wieder darauf hinweist und meine Plugins es deshalb nicht in den Store schaffen! ggwp Shopware :wink:

Sehr späte Antwort, aber ich hatte erst heute das gleiche „Problem“ und habe mal nach der Lösung gesucht.
Daher, für alle, die zufällig das selbe Problem haben und auf diesen Thread stoßen, hier die Lösung:

Damit das mit der URL passt (bspw. das „/de“ berücksichtigt wird), muss der technische Routen-Name mit frontend, widgets oder payment starten.
Also, bei dem Beispiel oben: {{ path('frontend.moorl-form-builder.fire', {'formId': form.id}) }} und dann läuft’s.
Der Name muss natürlich auch im Controller in der Route angepasst werden, nicht nur im Template im Aufruf. :slight_smile:

Dies kann man auch hier im Code sehen.

Beste Grüße,
Patrick :slight_smile:

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