class FragmentHandler in Zircon Profile 8.0
Same name and namespace in other branches
- 8 vendor/symfony/http-kernel/Fragment/FragmentHandler.php \Symfony\Component\HttpKernel\Fragment\FragmentHandler
Renders a URI that represents a resource fragment.
This class handles the rendering of resource fragments that are included into a main resource. The handling of the rendering is managed by specialized renderers.
This listener works in 2 modes:
- 2.3 compatibility mode where you must call setRequest whenever the Request changes.
- 2.4+ mode where you must pass a RequestStack instance in the constructor.
@author Fabien Potencier <fabien@symfony.com>
Hierarchy
- class \Symfony\Component\HttpKernel\Fragment\FragmentHandler
Expanded class hierarchy of FragmentHandler
See also
2 files declare their use of FragmentHandler
- FragmentHandlerTest.php in vendor/
symfony/ http-kernel/ Tests/ Fragment/ FragmentHandlerTest.php - LazyLoadingFragmentHandler.php in vendor/
symfony/ http-kernel/ DependencyInjection/ LazyLoadingFragmentHandler.php
File
- vendor/
symfony/ http-kernel/ Fragment/ FragmentHandler.php, line 35
Namespace
Symfony\Component\HttpKernel\FragmentView source
class FragmentHandler {
private $debug;
private $renderers = array();
private $request;
private $requestStack;
/**
* Constructor.
*
* RequestStack will become required in 3.0.
*
* @param FragmentRendererInterface[] $renderers An array of FragmentRendererInterface instances
* @param bool $debug Whether the debug mode is enabled or not
* @param RequestStack|null $requestStack The Request stack that controls the lifecycle of requests
*/
public function __construct(array $renderers = array(), $debug = false, RequestStack $requestStack = null) {
$this->requestStack = $requestStack;
foreach ($renderers as $renderer) {
$this
->addRenderer($renderer);
}
$this->debug = $debug;
}
/**
* Adds a renderer.
*
* @param FragmentRendererInterface $renderer A FragmentRendererInterface instance
*/
public function addRenderer(FragmentRendererInterface $renderer) {
$this->renderers[$renderer
->getName()] = $renderer;
}
/**
* Sets the current Request.
*
* This method was used to synchronize the Request, but as the HttpKernel
* is doing that automatically now, you should never call it directly.
* It is kept public for BC with the 2.3 version.
*
* @param Request|null $request A Request instance
*
* @deprecated since version 2.4, to be removed in 3.0.
*/
public function setRequest(Request $request = null) {
@trigger_error('The ' . __METHOD__ . ' method is deprecated since version 2.4 and will be removed in 3.0.', E_USER_DEPRECATED);
$this->request = $request;
}
/**
* Renders a URI and returns the Response content.
*
* Available options:
*
* * ignore_errors: true to return an empty string in case of an error
*
* @param string|ControllerReference $uri A URI as a string or a ControllerReference instance
* @param string $renderer The renderer name
* @param array $options An array of options
*
* @return string|null The Response content or null when the Response is streamed
*
* @throws \InvalidArgumentException when the renderer does not exist
* @throws \LogicException when no master request is being handled
*/
public function render($uri, $renderer = 'inline', array $options = array()) {
if (!isset($options['ignore_errors'])) {
$options['ignore_errors'] = !$this->debug;
}
if (!isset($this->renderers[$renderer])) {
throw new \InvalidArgumentException(sprintf('The "%s" renderer does not exist.', $renderer));
}
if (!($request = $this
->getRequest())) {
throw new \LogicException('Rendering a fragment can only be done when handling a Request.');
}
return $this
->deliver($this->renderers[$renderer]
->render($uri, $request, $options));
}
/**
* Delivers the Response as a string.
*
* When the Response is a StreamedResponse, the content is streamed immediately
* instead of being returned.
*
* @param Response $response A Response instance
*
* @return string|null The Response content or null when the Response is streamed
*
* @throws \RuntimeException when the Response is not successful
*/
protected function deliver(Response $response) {
if (!$response
->isSuccessful()) {
throw new \RuntimeException(sprintf('Error when rendering "%s" (Status code is %s).', $this
->getRequest()
->getUri(), $response
->getStatusCode()));
}
if (!$response instanceof StreamedResponse) {
return $response
->getContent();
}
$response
->sendContent();
}
private function getRequest() {
return $this->requestStack ? $this->requestStack
->getCurrentRequest() : $this->request;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
FragmentHandler:: |
private | property | ||
FragmentHandler:: |
private | property | ||
FragmentHandler:: |
private | property | ||
FragmentHandler:: |
private | property | ||
FragmentHandler:: |
public | function | Adds a renderer. | |
FragmentHandler:: |
protected | function | Delivers the Response as a string. | |
FragmentHandler:: |
private | function | ||
FragmentHandler:: |
public | function | Renders a URI and returns the Response content. | 1 |
FragmentHandler:: |
public | function | Sets the current Request. | |
FragmentHandler:: |
public | function | Constructor. | 1 |