3 namespace Drupal\Core\Routing;
5 use Symfony\Component\HttpFoundation\Request;
6 use Symfony\Component\HttpFoundation\RequestStack;
7 use Symfony\Component\Routing\RequestContext as SymfonyRequestContext;
10 * Holds information about the current request.
12 * @todo: Remove once the upstream RequestContext provides fromRequestStack():
13 * https://github.com/symfony/symfony/issues/12057
15 class RequestContext extends SymfonyRequestContext {
18 * The scheme, host and base path, for example "http://example.com/d8".
22 protected $completeBaseUrl;
25 * Populates the context from the current request from the request stack.
27 * @param \Symfony\Component\HttpFoundation\RequestStack $request_stack
28 * The current request stack.
30 public function fromRequestStack(RequestStack $request_stack) {
31 $this->fromRequest($request_stack->getCurrentRequest());
37 public function fromRequest(Request $request) {
38 parent::fromRequest($request);
40 // @todo Extract the code in DrupalKernel::initializeRequestGlobals.
41 // See https://www.drupal.org/node/2404601
42 if (isset($GLOBALS['base_url'])) {
43 $this->setCompleteBaseUrl($GLOBALS['base_url']);
48 * Gets the scheme, host and base path.
50 * For example, in an installation in a subdirectory "d8", it should be
51 * "https://example.com/d8".
53 public function getCompleteBaseUrl() {
54 return $this->completeBaseUrl;
58 * Sets the complete base URL for the Request context.
60 * @param string $complete_base_url
61 * The complete base URL.
63 public function setCompleteBaseUrl($complete_base_url) {
64 $this->completeBaseUrl = $complete_base_url;