2016-12-14 1 views
1

Ich möchte Routing für folgende URLs erstellen.Symfony 1.4 Route für PDF-Dateien erstellen

Alles beginnt pdf und endet mit .pdf

site.com/en/pdf/aaa/bbb/file.pdf 
site.com/pdf/aaa/bbb/file.pdf 
site.com/pdf/file.pdf 
... 

Mein Code ist:

global_pdf: 
    class: myRequestRoute 
    url: /:sf_culture/pdf/*/*.pdf 
    param: { module: pdf, action: showEmbed } 
    requirements: { sf_method: get } 

Aber es funktioniert nicht.

Wie geht das?

Vielen Dank.

+0

Was macht myRequestRoute? – sglessard

Antwort

1

Sie haben vier verschiedene Szenarien Ihre Routing muss umfassen:

  1. Route genaue Format entsprechen muss: site.com/pdf/file.pdf
  2. Route mit Sprache vor pdf übereinstimmen müssen: site.com /de/pdf/file.pdf
  3. Route muss mit allem nach PDF übereinstimmen: site.com/pdf/aaa/bbb/file.pdf
  4. Route muss mit Sprache vor und alles nach PDF entsprechen: site.com/ de/pdf/aaa/bbb/datei.pdf

Die folgenden Routen sollten jede der oben genannten Routen abdecken.

global_pdf_1: 
class: myRequestRoute 
url: /pdf/:filename.pdf 
param: { module: location, action: test } 
requirements: { sf_method: get } 

global_pdf_2: 
class: myRequestRoute 
url: /pdf/:anything/:filename.pdf 
param: { module: location, action: test } 
requirements: { sf_method: get, anything: .* } 

global_pdf_3: 
class: myRequestRoute 
url: /:sf_culture/pdf/:filename.pdf 
param: { module: location, action: test } 
requirements: { sf_method: get } 

global_pdf_4: 
class: myRequestRoute 
url: /:sf_culture/pdf/:anything/:filename.pdf 
param: { module: location, action: test } 
requirements: { sf_method: get, anything: .* } 
1

Ihre Matches sollten mit Doppelpunkt beginnen Variablen sein:

culture_dir_pdf: 
    url: /:sf_culture/pdf/:dirname/:filename.pdf 
    param: { module: pdf, action: showEmbed } 
    requirements: { sf_method: get } 

culture_pdf: 
    url: /:sf_culture/pdf/:filename.pdf 
    param: { module: pdf, action: showEmbed } 
    requirements: { sf_method: get } 

global_dir_pdf: 
    url: /pdf/:dirname/:filename.pdf 
    param: { module: pdf, action: showEmbed } 
    requirements: { sf_method: get } 

# ... 

Dann können Sie diese Anfrage in Ihrer showEmbed Aktion verwenden Vars.

Wenn Sie erweiterte passende Logik benötigen, würde ich Apache Rewrite verwenden, um PDF-Anfragen auf eine einzelne URL zu verweisen, dann fügen Sie die URL in Ihrer routing.yml hinzu.

+0

es funktioniert nicht für mich Apache 404 - nicht gefunden Die angeforderte URL /pdf/forexbook/en/Forex_Trading_Strategies.pdf wurde nicht auf diesem Server gefunden. – Sergey

+0

Vielleicht habe ich deine Frage verwechselt. Existiert die Datei unter http: // Ihre-Domain/pdf/forexbook/de/Forex_Trading_Strategies.pdf? – sglessard

+0

Die Datei existiert nicht für diese URLs – Sergey