0

ファイルのダウンロード アクションを指す Web フォームのリンクがあります。

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 フォームは変更や更新なしでそのまま残ります。データベースにデータが見つからない場合、どのような応答が返されるかわかりません。理想的には、フラッシュメッセージを設定したいのですが、リフレッシュしないとフォームにフラッシュが表示されず、リンクが作成される前にユーザーが作成したエントリがあった場合、リフレッシュするとユーザーが作成したエントリが破棄されますクリックしました。私は何をすべきか?

4

1 に答える 1

0

次のコードは、フラッシュメッセージを設定して更新を生成します

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

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

ただし、メッセージを表示する小枝をレンダリングすることもできます

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