LinkGeneratorTrait.php 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. namespace Drupal\Core\Routing;
  3. use Drupal\Core\Url;
  4. use Drupal\Core\Utility\LinkGeneratorInterface;
  5. /**
  6. * Wrapper methods for the Link Generator.
  7. *
  8. * This utility trait should only be used in application-level code, such as
  9. * classes that would implement ContainerInjectionInterface. Services registered
  10. * in the Container should not use this trait but inject the appropriate service
  11. * directly for easier testing.
  12. *
  13. * @deprecated in Drupal 8.0.0 and will be removed before Drupal 9.0.0.
  14. * Use \Drupal\Core\Link instead.
  15. *
  16. * @see https://www.drupal.org/node/2614344
  17. */
  18. trait LinkGeneratorTrait {
  19. /**
  20. * The link generator.
  21. *
  22. * @var \Drupal\Core\Utility\LinkGeneratorInterface
  23. */
  24. protected $linkGenerator;
  25. /**
  26. * Renders a link to a route given a route name and its parameters.
  27. *
  28. * For details on the arguments, usage, and possible exceptions see
  29. * \Drupal\Core\Utility\LinkGeneratorInterface::generate().
  30. *
  31. * @return \Drupal\Core\GeneratedLink
  32. * A GeneratedLink object containing a link to the given route and
  33. * parameters and bubbleable metadata.
  34. *
  35. * @deprecated in Drupal 8.0.0 and will be removed before Drupal 9.0.0.
  36. * Use \Drupal\Core\Link instead.
  37. *
  38. * @see https://www.drupal.org/node/2614344
  39. * @see \Drupal\Core\Utility\LinkGeneratorInterface::generate()
  40. */
  41. protected function l($text, Url $url) {
  42. return $this->getLinkGenerator()->generate($text, $url);
  43. }
  44. /**
  45. * Returns the link generator.
  46. *
  47. * @return \Drupal\Core\Utility\LinkGeneratorInterface
  48. * The link generator
  49. */
  50. protected function getLinkGenerator() {
  51. if (!isset($this->linkGenerator)) {
  52. $this->linkGenerator = \Drupal::service('link_generator');
  53. }
  54. return $this->linkGenerator;
  55. }
  56. /**
  57. * Sets the link generator service.
  58. *
  59. * @param \Drupal\Core\Utility\LinkGeneratorInterface $generator
  60. * The link generator service.
  61. *
  62. * @return $this
  63. */
  64. public function setLinkGenerator(LinkGeneratorInterface $generator) {
  65. $this->linkGenerator = $generator;
  66. return $this;
  67. }
  68. }