2017-08-26 134 views
1

我从窗体调用控制器函数并重定向回到同一页面。所有我想刷新页面,以便可以显示Flash消息。 它不会重定向到页面,而是停留在页面上并调用函数!页面不重新定向刷新

下面的代码:

public function triggerDownload($DownData , $filename){ 
    Yii::import('application.extensions.phpexcel.Classes.PHPExcel'); 
     $objPHPExcel = new PHPExcel(); 
     $objPHPExcel->setActiveSheetIndex(0); 
     $rowCount = 1; 
     $objPHPExcel->getActiveSheet()->SetCellValue('A'.$rowCount, 'USER NAME'); 
     $objPHPExcel->getActiveSheet()->SetCellValue('B'.$rowCount, 'EMAIL ADDRESS'); 
     if (array_key_exists("cam_id",$DownData)){ 
     $objPHPExcel->getActiveSheet()->SetCellValue('C'.$rowCount, 'CAM TITLE'); 
     } 
     $rowCount++; 
     foreach ($DownData as $key => $value) { 

     $objPHPExcel->getActiveSheet()->SetCellValue('A'.$rowCount, $value['username']); 

     $objPHPExcel->getActiveSheet()->SetCellValue('B'.$rowCount, $value['email']); 
     if (array_key_exists("cam_id",$DownData)){ 
     $objPHPExcel->getActiveSheet()->SetCellValue('C'.$rowCount, $value['cam_id']); 
     } 
     $rowCount++; 
     } 
     //make first row bold 
     $objPHPExcel->getActiveSheet()->getStyle("A1:I1")->getFont()->setBold(true); 
     $objPHPExcel->setActiveSheetIndex(0); 
     for($col = 'A'; $col !== 'G'; $col++) { 
      $objPHPExcel->getActiveSheet() 
       ->getColumnDimension($col) 
       ->setAutoSize(true); 
     } 
     header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); 
     header("Content-Disposition: attachment; filename=\"".$filename.".xlsx\""); 
     header("Cache-Control: max-age=0"); 
     $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); 
     $objWriter->save("php://output"); 

    Yii::app()->user->setFlash('success', 'Report Downloaded Successfully!'); 
    return $this->redirect('/admin/'); 
    } 
+0

你不需要使用回,然后删除最后一个斜杠或添加索引。 如果不行,试试这段代码:'$ this-> redirect(array('admin/index'));' –

回答

1

return $this->redirect('/admin/'); 

而是试图

$this->redirect(Yii::app()->request->urlReferrer); 

(无return需要)

1

您需要使用以下类型:

return $this->redirect(['admin']); 

如果你想在beforeAction(),你应该使用send()方法

return $this->redirect(['admin'],302)->send();