重定向页面时使用setFlash

时间:2015-04-16 14:24:22

标签: php yii

我正在创建一个使用PHP Yii框架下载csv文件的表单。我希望它显示Your file should be downloading.并在点击下载后保持在同一页面上。目前,它将下载内容,但不显示任何消息。如果我在浏览器中选择刷新按钮,则会显示setFlash消息。有什么建议?

if (isset($_GET['export'])) {

    $getData = $_GET['export'] == 'option1' ? $dataProvider->getData() : $myData->getData();

    $fileName = "file.csv";

    // Looping through $getData so that I can write to file

    Yii::app()->user->setFlash("success", "Your file should be downloading.");
    $this -> redirect(Yii::app()-> baseUrl . '/file.csv');
    exit();
}

1 个答案:

答案 0 :(得分:0)

您在服务器上设置了Flash消息,然后将客户端重定向到下载的CSV文件。 让我们看看步骤:

  1. 用户加载页面(可以看到下载按钮)
  2. 用户点击按钮和服务器

    2.1在会话中保存一条消息

    2.2将用户重定向到CSV文件,然后终止

  3. 请注意,服务器不会再次呈现网站,也不会刷新当前页面。 setFlash为当前和下一个请求保存一条消息,直到调用getFlash。 只有在刷新页面时才会调用getFlash。

    如果要在不刷新页面的情况下显示消息,则必须使用javascript并从脚本中删除setFlash调用。

    <div id="download-alert" style="display:none;">Your file should be downloading.</div>
    <a id="download-btn" href="...">Download</a>
    <script type="text/javascript">
        $('a#download-btn').click(function(){ $("#download-alert").show(); })
    </script>