Mercurial > hg > isophonics-drupal-site
diff core/lib/Drupal/Core/ParamConverter/MenuLinkPluginConverter.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/lib/Drupal/Core/ParamConverter/MenuLinkPluginConverter.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,52 @@ +<?php + +namespace Drupal\Core\ParamConverter; + +use Drupal\Core\Menu\MenuLinkManagerInterface; +use Drupal\Component\Plugin\Exception\PluginException; +use Symfony\Component\Routing\Route; + +/** + * Parameter converter for upcasting entity ids to full objects. + */ +class MenuLinkPluginConverter implements ParamConverterInterface { + + /** + * Plugin manager which creates the instance from the value. + * + * @var \Drupal\Core\Menu\MenuLinkManagerInterface + */ + protected $menuLinkManager; + + /** + * Constructs a new MenuLinkPluginConverter. + * + * @param \Drupal\Core\Menu\MenuLinkManagerInterface $menu_link_manager + * The menu link plugin manager. + */ + public function __construct(MenuLinkManagerInterface $menu_link_manager) { + $this->menuLinkManager = $menu_link_manager; + } + + /** + * {@inheritdoc} + */ + public function convert($value, $definition, $name, array $defaults) { + if ($value) { + try { + return $this->menuLinkManager->createInstance($value); + } + catch (PluginException $e) { + // Suppress the error. + } + } + } + + /** + * {@inheritdoc} + */ + public function applies($definition, $name, Route $route) { + return (!empty($definition['type']) && $definition['type'] === 'menu_link_plugin'); + } + +}