Verzeichnisstruktur phpBB-3.2.0


Veröffentlicht
06.01.2017

So funktioniert es


Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück

Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

      (Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

RoutableFragmentRenderer.php

Zuletzt modifiziert: 09.10.2024, 12:56 - Dateigröße: 3.05 KiB


 01  <?php
 02   
 03  /*
 04   * This file is part of the Symfony package.
 05   *
 06   * (c) Fabien Potencier <fabien@symfony.com>
 07   *
 08   * For the full copyright and license information, please view the LICENSE
 09   * file that was distributed with this source code.
 10   */
 11   
 12  namespace Symfony\Component\HttpKernel\Fragment;
 13   
 14  use Symfony\Component\HttpKernel\Controller\ControllerReference;
 15  use Symfony\Component\HttpFoundation\Request;
 16  use Symfony\Component\HttpKernel\EventListener\FragmentListener;
 17   
 18  /**
 19   * Adds the possibility to generate a fragment URI for a given Controller.
 20   *
 21   * @author Fabien Potencier <fabien@symfony.com>
 22   */
 23  abstract class RoutableFragmentRenderer implements FragmentRendererInterface
 24  {
 25      private $fragmentPath = '/_fragment';
 26   
 27      /**
 28       * Sets the fragment path that triggers the fragment listener.
 29       *
 30       * @param string $path The path
 31       *
 32       * @see FragmentListener
 33       */
 34      public function setFragmentPath($path)
 35      {
 36          $this->fragmentPath = $path;
 37      }
 38   
 39      /**
 40       * Generates a fragment URI for a given controller.
 41       *
 42       * @param ControllerReference $reference A ControllerReference instance
 43       * @param Request             $request   A Request instance
 44       * @param bool                $absolute  Whether to generate an absolute URL or not
 45       * @param bool                $strict    Whether to allow non-scalar attributes or not
 46       *
 47       * @return string A fragment URI
 48       */
 49      protected function generateFragmentUri(ControllerReference $reference, Request $request, $absolute = false, $strict = true)
 50      {
 51          if ($strict) {
 52              $this->checkNonScalar($reference->attributes);
 53          }
 54   
 55          // We need to forward the current _format and _locale values as we don't have
 56          // a proper routing pattern to do the job for us.
 57          // This makes things inconsistent if you switch from rendering a controller
 58          // to rendering a route if the route pattern does not contain the special
 59          // _format and _locale placeholders.
 60          if (!isset($reference->attributes['_format'])) {
 61              $reference->attributes['_format'] = $request->getRequestFormat();
 62          }
 63          if (!isset($reference->attributes['_locale'])) {
 64              $reference->attributes['_locale'] = $request->getLocale();
 65          }
 66   
 67          $reference->attributes['_controller'] = $reference->controller;
 68   
 69          $reference->query['_path'] = http_build_query($reference->attributes, '', '&');
 70   
 71          $path = $this->fragmentPath.'?'.http_build_query($reference->query, '', '&');
 72   
 73          if ($absolute) {
 74              return $request->getUriForPath($path);
 75          }
 76   
 77          return $request->getBaseUrl().$path;
 78      }
 79   
 80      private function checkNonScalar($values)
 81      {
 82          foreach ($values as $key => $value) {
 83              if (is_array($value)) {
 84                  $this->checkNonScalar($value);
 85              } elseif (!is_scalar($value) && null !== $value) {
 86                  throw new \LogicException(sprintf('Controller attributes cannot contain non-scalar/non-null values (value for key "%s" is not a scalar or null).', $key));
 87              }
 88          }
 89      }
 90  }
 91