ShortcutSetController.php in Drupal 9
File
core/modules/shortcut/src/Controller/ShortcutSetController.php
View source
<?php
namespace Drupal\shortcut\Controller;
use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\Path\PathValidatorInterface;
use Drupal\shortcut\ShortcutSetInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
class ShortcutSetController extends ControllerBase {
protected $pathValidator;
public function __construct(PathValidatorInterface $path_validator) {
$this->pathValidator = $path_validator;
}
public static function create(ContainerInterface $container) {
return new static($container
->get('path.validator'));
}
public function addShortcutLinkInline(ShortcutSetInterface $shortcut_set, Request $request) {
$link = $request->query
->get('link');
$name = $request->query
->get('name');
if (parse_url($link, PHP_URL_SCHEME) === NULL && $this->pathValidator
->isValid($link)) {
$shortcut = $this
->entityTypeManager()
->getStorage('shortcut')
->create([
'title' => $name,
'shortcut_set' => $shortcut_set
->id(),
'link' => [
'uri' => 'internal:/' . $link,
],
]);
try {
$shortcut
->save();
$this
->messenger()
->addStatus($this
->t('Added a shortcut for %title.', [
'%title' => $shortcut
->label(),
]));
} catch (\Exception $e) {
$this
->messenger()
->addError($this
->t('Unable to add a shortcut for %title.', [
'%title' => $shortcut
->label(),
]));
}
return $this
->redirect('<front>');
}
throw new AccessDeniedHttpException();
}
}