2015-04-16 93 views
0

我正在創建一個使用PHP Yii框架下載csv文件的表單。我希望它顯示Your file should be downloading.並在點擊下載後保持在同一頁面上。目前,它會下載內容,但不顯示任何消息。如果我在瀏覽器中選擇刷新按鈕,則會顯示setFlash消息。有什麼建議麼?重定向時使用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(); 
} 

回答

0

您在服務器上設置了Flash消息,然後您將客戶端重定向到CSV文件,該文件將下載。 所以讓我們看看以下步驟:

  1. 用戶加載一個頁面(其中的下載按鈕是可見的)
  2. 用戶點擊該按鈕,並且服務器

    2.1保存在會話的消息

    2.2將用戶重定向到CSV文件,然後終止

注意,該服務器不會再次呈現網站,也不會刷新當前頁面。 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>