2017-08-26 3 views
1

J'appelle une fonction de contrôleur à partir d'un formulaire et redirige vers la même page. Tout ce que je veux que la page soit rafraîchie afin que le message flash puisse être affiché. il ne redirige pas vers la page à la place il reste sur la page et appelle la fonction!Page ne pas rediriger avec actualiser

Voici le code:

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

Vous n'avez pas besoin d'utiliser le retour, puis retirez la dernière barre oblique ou ajouter index. Si ce n'est pas le travail, essayez avec ce code: '$ this-> redirect (array ('admin/index'));' –

Répondre

1

Au lieu de

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

Essayez

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

(pas return nécessaire)

1

Vous devez utiliser le typage suivant:

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

Et si vous essayez que beforeAction(), vous devez utiliser la méthode send()

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