Content.php in JS Callback Handler 8.3
File
src/Plugin/Js/Content.php
View source
<?php
namespace Drupal\js\Plugin\Js;
use Drupal\Component\Utility\UrlHelper;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
class Content extends JsCallbackBase {
protected $controllerResolver;
protected $currentRouteMatch;
protected $router;
protected $titleResolver;
protected $routeMatcher;
public function __construct(array $configuration, $plugin_id, $plugin_definition) {
parent::__construct($configuration, $plugin_id, $plugin_definition);
$this->controllerResolver = \Drupal::service('controller_resolver');
$this->router = \Drupal::service('router');
$this->titleResolver = \Drupal::service('title_resolver');
$this->routeMatcher = \Drupal::service('router.matcher');
$this->currentRouteMatch = \Drupal::service('current_route_match');
}
public function access($path = '') {
return \Drupal::accessManager()
->checkRequest($this
->getRequest($path));
}
protected function getRequest($path = '') {
$request = Request::create($path);
$this->router
->matchRequest($request);
return $request;
}
protected function getRoute(Request $request) {
return $this->currentRouteMatch
->getRouteMatchFromRequest($request)
->getRouteObject();
}
public function execute($path = '') {
$base_url = \Drupal::service('router.request_context')
->getCompleteBaseUrl();
if (!UrlHelper::isExternal($path) || UrlHelper::externalIsLocal($path, $base_url)) {
$path = preg_replace('`^' . preg_quote($base_url) . '`', '', $path);
}
$request = $this
->getRequest($path);
$controller = $this->controllerResolver
->getController($request);
if (!$controller) {
throw new NotFoundHttpException();
}
if ($title = $this->titleResolver
->getTitle($request, $this
->getRoute($request))) {
$this
->setTitle($title);
}
return call_user_func_array($controller, $this->controllerResolver
->getArguments($request, $controller));
}
}
Classes
Name |
Description |
Content |
Plugin annotation
@JsCallback(
id = "js.content",
allowed_methods = { "GET" },
csrf_token = FALSE,
) |