CompositionHtmlRouteProvider.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. namespace Drupal\edlp_studio;
  3. use Drupal\Core\Entity\EntityTypeInterface;
  4. use Drupal\Core\Entity\Routing\AdminHtmlRouteProvider;
  5. use Symfony\Component\Routing\Route;
  6. /**
  7. * Provides routes for Composition entities.
  8. *
  9. * @see \Drupal\Core\Entity\Routing\AdminHtmlRouteProvider
  10. * @see \Drupal\Core\Entity\Routing\DefaultHtmlRouteProvider
  11. */
  12. class CompositionHtmlRouteProvider extends AdminHtmlRouteProvider {
  13. /**
  14. * {@inheritdoc}
  15. */
  16. public function getRoutes(EntityTypeInterface $entity_type) {
  17. $collection = parent::getRoutes($entity_type);
  18. $entity_type_id = $entity_type->id();
  19. if ($settings_form_route = $this->getSettingsFormRoute($entity_type)) {
  20. $collection->add("$entity_type_id.settings", $settings_form_route);
  21. }
  22. return $collection;
  23. }
  24. /**
  25. * Gets the settings form route.
  26. *
  27. * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
  28. * The entity type.
  29. *
  30. * @return \Symfony\Component\Routing\Route|null
  31. * The generated route, if available.
  32. */
  33. protected function getSettingsFormRoute(EntityTypeInterface $entity_type) {
  34. if (!$entity_type->getBundleEntityType()) {
  35. $route = new Route("/admin/structure/studio/{$entity_type->id()}/settings");
  36. $route
  37. ->setDefaults([
  38. '_form' => 'Drupal\edlp_studio\Form\CompositionSettingsForm',
  39. '_title' => "{$entity_type->getLabel()} settings",
  40. ])
  41. ->setRequirement('_permission', $entity_type->getAdminPermission())
  42. ->setOption('_admin_route', TRUE);
  43. return $route;
  44. }
  45. }
  46. }