我想在点击时下载文件,但它不起作用。这是我的代码:
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
我的语法有什么问题?
答案 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;路线中的人物。