MenuLinkPluginConverter.php 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <?php
  2. namespace Drupal\Core\ParamConverter;
  3. use Drupal\Core\Menu\MenuLinkManagerInterface;
  4. use Drupal\Component\Plugin\Exception\PluginException;
  5. use Symfony\Component\Routing\Route;
  6. /**
  7. * Parameter converter for upcasting entity ids to full objects.
  8. */
  9. class MenuLinkPluginConverter implements ParamConverterInterface {
  10. /**
  11. * Plugin manager which creates the instance from the value.
  12. *
  13. * @var \Drupal\Core\Menu\MenuLinkManagerInterface
  14. */
  15. protected $menuLinkManager;
  16. /**
  17. * Constructs a new MenuLinkPluginConverter.
  18. *
  19. * @param \Drupal\Core\Menu\MenuLinkManagerInterface $menu_link_manager
  20. * The menu link plugin manager.
  21. */
  22. public function __construct(MenuLinkManagerInterface $menu_link_manager) {
  23. $this->menuLinkManager = $menu_link_manager;
  24. }
  25. /**
  26. * {@inheritdoc}
  27. */
  28. public function convert($value, $definition, $name, array $defaults) {
  29. if ($value) {
  30. try {
  31. return $this->menuLinkManager->createInstance($value);
  32. }
  33. catch (PluginException $e) {
  34. // Suppress the error.
  35. }
  36. }
  37. }
  38. /**
  39. * {@inheritdoc}
  40. */
  41. public function applies($definition, $name, Route $route) {
  42. return (!empty($definition['type']) && $definition['type'] === 'menu_link_plugin');
  43. }
  44. }