MoorleicheMoorleiche MemberComments: 278 Received thanks: 53 Member since: August 2019

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

<form class="login-form" action="{{ path('moorl.sign-in') }}" method="post" data-form-validation="true">...</form>

controller methode

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

Hab ich irgendetwas flasch gemacht?

Comments

  • ShopwareianerShopwareianer MemberComments: 3624 Received thanks: 644 edited September 2019 Member since: November 2013

    Storefront API?

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

     

  • MoorleicheMoorleiche MemberComments: 278 Received thanks: 53 Member since: August 2019

    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.  

     

     

  • SegSeg MemberComments: 16 Received thanks: 5 Member since: October 2018

    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

  • MoorleicheMoorleiche MemberComments: 278 Received thanks: 53 Member since: August 2019

    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 :P

     

     

     

  • huebertwebhuebertweb MemberComments: 19 Received thanks: 4 Member since: September 2017

    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: ...

  • xxxm3xxxm3 MemberComments: 3 Received thanks: 0 Member since: August 2019

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

  • ronin030ronin030 MemberComments: 3 Received thanks: 0 Member since: November 2012

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

  • Jostshopping24Jostshopping24 MemberComments: 63 Received thanks: 1 Member since: February 21

    Oh ja ich habs... ;)

    Eine Variante der URL war noch nicht registriert!

    1000 Dank Kiss

  • MoorleicheMoorleiche MemberComments: 278 Received thanks: 53 Member since: August 2019

    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:

    image

    path('frontend.cart.offcanvas')

    image

    path('egal.welcher.custom.controller')

    image

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

    Lösungen????

  • EikeBrandtWarnekeEikeBrandtWarneke AdministratorsComments: 2998 Received thanks: 680 Member since: June 2013

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

    Viele Grüße

    Thanked by 1Moorleiche
  • AlexGalaxAlexGalax MemberComments: 156 Received thanks: 22 edited September 18 Member since: April 2012

    url('frontend.cart.offcanvas')

    Thanked by 1Moorleiche
  • MoorleicheMoorleiche MemberComments: 278 Received thanks: 53 Member since: August 2019
    {{ 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

     

     

  • AlexGalaxAlexGalax MemberComments: 156 Received thanks: 22 Member since: April 2012

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

Sign In or Register to comment.