2013-08-08 13 views
0

파일 다운로드 동작을 가리키는 링크가 웹 양식에 있습니다.symfony 2, 파일 다운로드 요청 용 플래시 메시지 세트가 포함 된 빈 응답 반환

public function downloadDataAction($data_id) 
{ 
    //get data from database and create a zip file ($fzip) with the data 

    $content = file_get_contents($fzip); 
    $filename = 'mydata_' . $data_id . '.zip'; 
    $headers = array(
     'Content-Type' => 'application/zip', 
     'Content-Disposition' => "attachment; filename=" . urlencode($filename), 
    ); 

    return new Response($content, 200, $headers); 
} 

위의 동작은 예상대로 작동합니다. zip 파일을 다운로드 한 경우 지정된 ID가있는 데이터가 있고 원래 웹 양식은 그대로 유지되거나 변경되거나 새로 고침되지 않습니다. 데이터베이스에서 데이터를 찾을 수없는 경우 어떤 응답이 반환되는지 알 수 없습니다. 이상적으로, 플래시 메시지를 설정하고 싶지만 새로 고침을하지 않으면 플래시가 양식에 표시되지 않으며 링크가 생기기 전에 사용자가 만든 항목이있는 경우 새로 고침하면 사용자가 만든 항목이 삭제됩니다. 클릭 함. 어떻게해야합니까?

답변

0

다음 코드는 플래시 메시지

if (!isset($fzip)) { 
    $this->get('session')->getFlashBag()->add('notice','Notice message content'); 

    return $this->redirect($this->generateUrl('_route_name')); 
} 

설정으로 새로 고침을 생성하지만 당신은 또한 메시지가 표시됩니다 일부 나뭇 가지를 렌더링 할 수

if (!isset($fzip)) { 
    return $this->render('@AcmeDemo/Default/index.html.twig', array('msg' => 'message content')); 
}