Symfony 1.4 为 pdf 文件创建路径

Symfony 1.4 create route for pdf files

我想为以下网址创建路由。

一切都以 pdf 开始并以 .pdf

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

我的代码是:

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

但是没用。

怎么做?

谢谢。

您的匹配项应该是以冒号开头的变量:

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 }

# ...

然后您可以在 showEmbed 操作中使用这些请求变量。

如果您需要高级匹配逻辑,我会使用 Apache Rewrite 将 PDF 请求指向单个 URL,然后您在 routing.yml 中添加 URL。

您的路由需要涵盖四种不同的场景:

  1. 路线必须完全匹配格式:site.com/pdf/file.pdf
  2. route 必须与 pdf 之前的语言相匹配:site.com/en/pdf/file.pdf
  3. route 必须与 pdf 之后的任何内容匹配:site.com/pdf/aaa/bbb/file.pdf
  4. 路线必须与 pdf 之前和之后的语言相匹配:site.com/en/pdf/aaa/bbb/file.pdf

以下路线应涵盖上述各项。

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