Php 细枝:将文件路径作为参数传递给url

Php 细枝:将文件路径作为参数传递给url,php,symfony,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">Downl

我想让文件下载点击,但它不工作。下面是我的代码:

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>
这是我得到的错误:

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

我的语法有什么问题?

您的语法没有错误,但Symfony2路由正在寻找一个不存在的路由。您需要对参数进行url_编码

Symfony2路由正在查找与
/example/download//bundles/example/files/
匹配的URL,但找不到该URL

{% 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>
{%set filepath=(资产('bundles/example/files/filename.pdf'))| url_encode%}
这是未经测试,但应该做的把戏

有关详细信息,请参阅

虽然我不建议将其作为参数传递…->这就是您应该如何做到的。

或者您可以使用烹饪书中的来启用路由中的“/”字符

{% 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>