我正在创建一个使用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();
}
答案 0 :(得分:0)
您在服务器上设置了Flash消息,然后将客户端重定向到下载的CSV文件。 让我们看看步骤:
用户点击按钮和服务器
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>