0

我在网络表单上有一个链接,它指向文件下载操作。

public function downloadDataAction($data_id)
{
    //get data from database and create a zip file ($fzip) with the data

    $content = file_get_contents($fzip);
    $filename = 'mydata_' . $data_id . '.zip'; 
    $headers = array(
        'Content-Type' => 'application/zip',
        'Content-Disposition' => "attachment; filename=" . urlencode($filename),
    ); 

    return new Response($content, 200, $headers);
}

上述动作按预期工作;当存在具有指定 id 的数据时,将下载 zip 文件,并且原始 Web 表单保持原样,没有任何更改或刷新。当数据库中没有找到数据时,我不知道返回什么响应。理想情况下,我想设置一条 flash 消息,但如果没有刷新,表单上将看不到 flash,如果用户在链接之前创建了任何条目,刷新将破坏用户创建的条目点击。我应该怎么办?

4

1 回答 1

0

Following code will generate refresh with setting flash message

if (!isset($fzip)) {
     $this->get('session')->getFlashBag()->add('notice','Notice message content');

     return $this->redirect($this->generateUrl('_route_name'));
}

But you can also render some twig that will display message

if (!isset($fzip)) {
    return $this->render('@AcmeDemo/Default/index.html.twig', array('msg' => 'message content'));
}
于 2013-08-08T06:58:50.583 回答