Twig:将文件路径作为参数传递给url

时间:2015-06-03 07:31:31

标签: php symfony

我想在点击时下载文件,但它不起作用。这是我的代码:

files.html.twig

{% set filepath = asset('bundles/example/files/filename.pdf') %}
<a href="{{ url('_bundle_route_to_download', { 'filepath': filepath }) }}">
<button class="button button-icon button-download">Download</button></a>

Controller.php这样

 /**
    * @Route("/example/download/{filepath}", name="_bundle_route_to_download")
    */
    public function downloadFile($filepath)
    {
      //...
    }

这是我得到的错误:

No route found for "GET    /example/download//bundles/example/files/filename.pdf%3F1418390151

我的语法有什么问题?

2 个答案:

答案 0 :(得分:1)

您的语法没有错,但Symfony2路由正在寻找不存在的路由。您需要对参数进行url_encode。

Symfony2路由正在寻找与/example/download//bundles/example/files/匹配的网址。

{% set filepath = (asset('bundles/example/files/filename.pdf'))|url_encode %}
<a href="{{ url('_bundle_route_to_download', { 'filepath': filepath }) }}">
<button class="button button-icon button-download">Download</button></a>

这是未经测试但应该做的伎俩。

有关详细信息,请参阅Twig Url Encode

虽然我不建议将其作为参数传递... - &gt;那是你怎么做的。

答案 1 :(得分:-1)

或者你可以使用The Cookbook中的this来启用&#34; /&#34;路线中的人物。