[ Index ]

PHP Cross Reference of phpBB-3.3.14-deutsch

title

Body

[close]

/vendor/symfony/http-foundation/ -> RedirectResponse.php (source)

   1  <?php
   2  
   3  /*
   4   * This file is part of the Symfony package.
   5   *
   6   * (c) Fabien Potencier <fabien@symfony.com>
   7   *
   8   * For the full copyright and license information, please view the LICENSE
   9   * file that was distributed with this source code.
  10   */
  11  
  12  namespace Symfony\Component\HttpFoundation;
  13  
  14  /**
  15   * RedirectResponse represents an HTTP response doing a redirect.
  16   *
  17   * @author Fabien Potencier <fabien@symfony.com>
  18   */
  19  class RedirectResponse extends Response
  20  {
  21      protected $targetUrl;
  22  
  23      /**
  24       * Creates a redirect response so that it conforms to the rules defined for a redirect status code.
  25       *
  26       * @param string $url     The URL to redirect to. The URL should be a full URL, with schema etc.,
  27       *                        but practically every browser redirects on paths only as well
  28       * @param int    $status  The status code (302 by default)
  29       * @param array  $headers The headers (Location is always set to the given URL)
  30       *
  31       * @throws \InvalidArgumentException
  32       *
  33       * @see https://tools.ietf.org/html/rfc2616#section-10.3
  34       */
  35      public function __construct($url, $status = 302, $headers = [])
  36      {
  37          parent::__construct('', $status, $headers);
  38  
  39          $this->setTargetUrl($url);
  40  
  41          if (!$this->isRedirect()) {
  42              throw new \InvalidArgumentException(sprintf('The HTTP status code is not a redirect ("%s" given).', $status));
  43          }
  44  
  45          if (301 == $status && !\array_key_exists('cache-control', array_change_key_case($headers, \CASE_LOWER))) {
  46              $this->headers->remove('cache-control');
  47          }
  48      }
  49  
  50      /**
  51       * Factory method for chainability.
  52       *
  53       * @param string $url     The url to redirect to
  54       * @param int    $status  The response status code
  55       * @param array  $headers An array of response headers
  56       *
  57       * @return static
  58       */
  59      public static function create($url = '', $status = 302, $headers = [])
  60      {
  61          return new static($url, $status, $headers);
  62      }
  63  
  64      /**
  65       * Returns the target URL.
  66       *
  67       * @return string target URL
  68       */
  69      public function getTargetUrl()
  70      {
  71          return $this->targetUrl;
  72      }
  73  
  74      /**
  75       * Sets the redirect target of this response.
  76       *
  77       * @param string $url The URL to redirect to
  78       *
  79       * @return $this
  80       *
  81       * @throws \InvalidArgumentException
  82       */
  83      public function setTargetUrl($url)
  84      {
  85          if (empty($url)) {
  86              throw new \InvalidArgumentException('Cannot redirect to an empty URL.');
  87          }
  88  
  89          $this->targetUrl = $url;
  90  
  91          $this->setContent(
  92              sprintf('<!DOCTYPE html>
  93  <html>
  94      <head>
  95          <meta charset="UTF-8" />
  96          <meta http-equiv="refresh" content="0;url=\'%1$s\'" />
  97  
  98          <title>Redirecting to %1$s</title>
  99      </head>
 100      <body>
 101          Redirecting to <a href="%1$s">%1$s</a>.
 102      </body>
 103  </html>', htmlspecialchars($url, \ENT_QUOTES, 'UTF-8')));
 104  
 105          $this->headers->set('Location', $url);
 106  
 107          return $this;
 108      }
 109  }


Generated: Mon Nov 25 19:05:08 2024 Cross-referenced by PHPXref 0.7.1