2017-12-28 12 views
0

ich auf einem symfony3 Projekt bin zu arbeiten, und ich bin fest mit einem Problem,Symfony erzeugen falsche URL mit Doppel/

Wir E-Mails senden, der Zweig basieren, mit einem Knopf, der hat einen Link zu unserem Plattform.

Button example

Und das geöffnete Dokument Schaltfläche Link ist die folgende:

app.example.com/books/bookId/pageId

, die durch erzeugt wird Zweig:

url("open_book", { bookId: book_id, pageId: page_id }) 

Und die URL ist definiert auf eine Controller-Datei, mit Anmerkungen

@Route("/book/{bookId}/{pageId}", name="open_book") 

der Link, den Benutzer auf der E-Mail erhält, ist also das Original, aber mit Doppel // vor Büchern, wie folgt aus:

app.example.com// Bücher/BookID/pageId

ich arbeite an letzter Zweig Version, und ich weiß nicht, ob es entweder symfony Problem sein kann, da sein nur auf unserem prod Umgebungen geschieht (es funktioniert auf lokalen, yey)

Wenn es hilft, unsere routing.yml

app: 
    resource: "@BooksBundle/Controller/" 
    type:  annotation 
    prefix: /
    host:  app.%host% 

Dies geschieht nur mit URLs, die von Zweig generiert werden. Wir verwenden jms Übersetzung und jms i18n Bündel auch, so dass ich dachte, vielleicht ist es versucht, eine Null-Locale zu setzen betwen// wie:

app.example.com/en/books/bookId/pageId

Aber statt von en, vielleicht eine leere Sprache.

Irgendeine Idee mit zu beginnen?

UPDATE 03.01.18 Hey! Danke für alle Antworten. Es scheint, dass ein Problem mit symfony Konfiguration am Ende war ...

Auf Datei parameters.yml:

router.request_context.scheme: '%env(ROUTER_REQUEST_CONTEXT_SCHEME)%' 
router.request_context.host: '%env(ROUTER_REQUEST_CONTEXT_HOST)%' 
router.request_context.base_url: '%env(ROUTER_REQUEST_CONTEXT_BASE_URL)%' 

Dann ist unser Wert für base_url war /. Scheint, das war das eigentliche Problem. Das Entfernen von/auf diesem Parameter macht den Trick.

Danke !!

+0

Sind die durch einen Befehl erzeugen E-Mails? – goto

+0

Scheint, das war ein symfony Problem. Aktualisiert meinen Beitrag mit der Antwort. – Stouter

Antwort

-2

versuchen, diese Linie in der Steuerung / Sie verwenden Präfix

url("open_book", { bookId: book_id, pageId: page_id }) 

von

url("open_book", { bookId: book_id, pageId: page_id }) | replace({'//': "/"}) 

ODER

{{ app.request.schemeAndHttpHost }} {{ path("open_book", { bookId: book_id, pageId: page_id }) }} 
+2

Das sieht nicht wie eine feste Lösung für das Problem aus, sondern setzt einen Patch auf –

3

Für jede Route zu ersetzen:

Das bedeutet, dass jede Route wie:

@Route("/book/{bookId}/{pageId}", name="open_book") 

Wird mit / vorangestellt werden. Am Ende wird diese Route //book/{bookId}/{pageId} sein. Einige Bibliotheken schneiden Pfadwerte ab, die anderen nicht.

So entfernen Sie einfach prefix Parameter komplett oder ohne führenden Schrägstrich Route des Weg erklären:

@Route("book/{bookId}/{pageId}", name="open_book") 
+0

Schließen, aber am Ende scheint es, dass das Routing-Problem auf parameters.yml war. Wie auch immer, deine Herangehensweise hilft mir, der Lösung nahe zu kommen, also vielen Dank. – Stouter