You are here

protected function RoutableFragmentRenderer::generateFragmentUri in Zircon Profile 8.0

Same name and namespace in other branches
  1. 8 vendor/symfony/http-kernel/Fragment/RoutableFragmentRenderer.php \Symfony\Component\HttpKernel\Fragment\RoutableFragmentRenderer::generateFragmentUri()

Generates a fragment URI for a given controller.

Parameters

ControllerReference $reference A ControllerReference instance:

Request $request A Request instance:

bool $absolute Whether to generate an absolute URL or not:

bool $strict Whether to allow non-scalar attributes or not:

Return value

string A fragment URI

3 calls to RoutableFragmentRenderer::generateFragmentUri()
AbstractSurrogateFragmentRenderer::generateSignedFragmentUri in vendor/symfony/http-kernel/Fragment/AbstractSurrogateFragmentRenderer.php
HIncludeFragmentRenderer::render in vendor/symfony/http-kernel/Fragment/HIncludeFragmentRenderer.php
Additional available options:
InlineFragmentRenderer::render in vendor/symfony/http-kernel/Fragment/InlineFragmentRenderer.php
Additional available options:

File

vendor/symfony/http-kernel/Fragment/RoutableFragmentRenderer.php, line 49

Class

RoutableFragmentRenderer
Adds the possibility to generate a fragment URI for a given Controller.

Namespace

Symfony\Component\HttpKernel\Fragment

Code

protected function generateFragmentUri(ControllerReference $reference, Request $request, $absolute = false, $strict = true) {
  if ($strict) {
    $this
      ->checkNonScalar($reference->attributes);
  }

  // We need to forward the current _format and _locale values as we don't have
  // a proper routing pattern to do the job for us.
  // This makes things inconsistent if you switch from rendering a controller
  // to rendering a route if the route pattern does not contain the special
  // _format and _locale placeholders.
  if (!isset($reference->attributes['_format'])) {
    $reference->attributes['_format'] = $request
      ->getRequestFormat();
  }
  if (!isset($reference->attributes['_locale'])) {
    $reference->attributes['_locale'] = $request
      ->getLocale();
  }
  $reference->attributes['_controller'] = $reference->controller;
  $reference->query['_path'] = http_build_query($reference->attributes, '', '&');
  $path = $this->fragmentPath . '?' . http_build_query($reference->query, '', '&');
  if ($absolute) {
    return $request
      ->getUriForPath($path);
  }
  return $request
    ->getBaseUrl() . $path;
}