Esempio n. 1
0
 /**
  * Sends content for the current web response.
  *
  * @param DispatcherResponseInterface $response
  * @return DispatcherResponseTransportRedirect
  */
 public function sendContent(DispatcherResponseInterface $response)
 {
     $session = $response->getUser()->getSession();
     //Set the messages into the session
     $messages = $response->getMessages();
     if (count($messages)) {
         //Auto start the session if it's not active.
         if (!$session->isActive()) {
             $session->start();
         }
         $session->getContainer('message')->values($messages);
     }
     //Set the redirect into the response
     $response->setContent(sprintf('<!DOCTYPE html>
             <html>
                 <head>
                     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
                     <meta http-equiv="refresh" content="1;url=%1$s" />
                     <title>Redirecting to %1$s</title>
                 </head>
                 <body>
                     Redirecting to <a href="%1$s">%1$s</a>.
                 </body>
             </html>', htmlspecialchars($response->headers->get('Location'), ENT_QUOTES, 'UTF-8')));
     return parent::sendContent($response);
 }
Esempio n. 2
0
 /**
  * Send HTTP response
  *
  * If this is a redirect response, send the response and stop the transport handler chain.
  *
  * @link: https://en.wikipedia.org/wiki/Meta_refresh
  *
  * @param DispatcherResponseInterface $response
  * @return boolean
  */
 public function send(DispatcherResponseInterface $response)
 {
     if ($response->isRedirect()) {
         $session = $response->getUser()->getSession();
         //Set the messages into the session
         $messages = $response->getMessages();
         if (count($messages)) {
             //Auto start the session if it's not active.
             if (!$session->isActive()) {
                 $session->start();
             }
             $session->getContainer('message')->add($messages);
         }
         //Set the redirect into the response
         $format = $response->getRequest()->getFormat();
         if ($format == 'json') {
             array_unshift($messages, sprintf('Redirecting to %1$s', $response->getHeaders()->get('Location')));
             $response->setContent(json_encode(array('messages' => $messages)), 'application/json');
         }
         if ($format == 'html') {
             $response->setContent(sprintf('<!DOCTYPE html>
                     <html>
                         <head>
                             <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
                             <noscript>
                                 <meta http-equiv="refresh" content="1;url=%1$s" />
                             </noscript>
                             <title>Redirecting to %1$s</title>
                         </head>
                         <body onload="window.location = \'%1$s\'">
                             Redirecting to <a href="%1$s">%1$s</a>.
                         </body>
                     </html>', htmlspecialchars($response->getHeaders()->get('Location'), ENT_QUOTES, 'UTF-8')), 'text/html');
         }
         return parent::send($response);
     }
 }