Symfony 1.4为pdf文件创建路由

时间:2016-12-14 11:14:26

标签: php routing symfony1

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

所有内容均以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 }

但它不起作用。

怎么做?

谢谢。

2 个答案:

答案 0 :(得分:1)

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

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 :(得分:1)

您的路由需要涵盖四种不同的方案:

  1. route必须符合确切的格式:site.com/pdf/file.pdf
  2. 路线必须与pdf之前的语言匹配:site.com/en/pdf/file.pdf
  3. 路线必须与pdf之后的任何内容匹配:site.com/pdf/aaa/bbb/file.pdf
  4. 路线必须与之前的语言匹配,以及pdf之后的任何内容:site.com/en/pdf/aaa/bbb/file.pdf
  5. 以下路线应涵盖以上各项。

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