我从表单调用控制器函数并重定向回同一页面。我只想刷新页面,以便显示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 :(得分:1)
而不是
return $this->redirect('/admin/');
尝试
$this->redirect(Yii::app()->request->urlReferrer);
(不需要return
)
答案 1 :(得分:1)
您需要使用以下输入:
return $this->redirect(['admin']);
如果你在beforeAction()中尝试,你应该使用send()方法
return $this->redirect(['admin'],302)->send();