diff --git a/core/core.services.yml b/core/core.services.yml index 0fe0a7f191a0a66567ce5c8129daa9b66aae76d5..026f687b725cea36e8af56f793da768e64143712 100644 --- a/core/core.services.yml +++ b/core/core.services.yml @@ -695,7 +695,7 @@ services: arguments: ['@request_stack', '@config.factory', '@path_processor_manager'] link_generator: class: Drupal\Core\Utility\LinkGenerator - arguments: ['@url_generator', '@module_handler'] + arguments: ['@url_generator', '@module_handler', '@renderer'] router: class: Drupal\Core\Routing\AccessAwareRouter arguments: ['@router.no_access_checks', '@access_manager', '@current_user'] diff --git a/core/lib/Drupal/Core/Utility/LinkGenerator.php b/core/lib/Drupal/Core/Utility/LinkGenerator.php index 128dafd8e113d927d7e83b402b0493714e1c995d..1a9e22fbf426f30a2cc9117d302f2b9180e291f1 100644 --- a/core/lib/Drupal/Core/Utility/LinkGenerator.php +++ b/core/lib/Drupal/Core/Utility/LinkGenerator.php @@ -13,6 +13,7 @@ use Drupal\Core\GeneratedLink; use Drupal\Core\Link; use Drupal\Core\Path\AliasManagerInterface; +use Drupal\Core\Render\RendererInterface; use Drupal\Core\Routing\UrlGeneratorInterface; use Drupal\Core\Template\Attribute; use Drupal\Core\Url; @@ -36,6 +37,13 @@ class LinkGenerator implements LinkGeneratorInterface { */ protected $moduleHandler; + /** + * The renderer service. + * + * @var \Drupal\Core\Render\RendererInterface + */ + protected $renderer; + /** * Constructs a LinkGenerator instance. * @@ -43,10 +51,13 @@ class LinkGenerator implements LinkGeneratorInterface { * The url generator. * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler * The module handler. + * @param \Drupal\Core\Render\RendererInterface $renderer + * The renderer service. */ - public function __construct(UrlGeneratorInterface $url_generator, ModuleHandlerInterface $module_handler) { + public function __construct(UrlGeneratorInterface $url_generator, ModuleHandlerInterface $module_handler, RendererInterface $renderer) { $this->urlGenerator = $url_generator; $this->moduleHandler = $module_handler; + $this->renderer = $renderer; } /** @@ -75,8 +86,7 @@ public function generate($text, Url $url, $collect_cacheability_metadata = FALSE // Start building a structured representation of our link to be altered later. $variables = array( - // @todo Inject the service when drupal_render() is converted to one. - 'text' => is_array($text) ? drupal_render($text) : $text, + 'text' => is_array($text) ? $this->renderer->render($text) : $text, 'url' => $url, 'options' => $url->getOptions(), ); diff --git a/core/modules/views/tests/src/Unit/Plugin/field/FieldPluginBaseTest.php b/core/modules/views/tests/src/Unit/Plugin/field/FieldPluginBaseTest.php index 0e4553705b4996bbcd2b0877f3090d2c74ebc42a..11b6eb83a7f2a4a464f6d58a642e21f71cbc92e8 100644 --- a/core/modules/views/tests/src/Unit/Plugin/field/FieldPluginBaseTest.php +++ b/core/modules/views/tests/src/Unit/Plugin/field/FieldPluginBaseTest.php @@ -181,7 +181,7 @@ protected function setUpUrlIntegrationServices() { \Drupal::getContainer()->set('unrouted_url_assembler', $this->unroutedUrlAssembler); - $this->linkGenerator = new LinkGenerator($this->urlGenerator, $this->getMock('Drupal\Core\Extension\ModuleHandlerInterface')); + $this->linkGenerator = new LinkGenerator($this->urlGenerator, $this->getMock('Drupal\Core\Extension\ModuleHandlerInterface'), $this->renderer); } /** diff --git a/core/tests/Drupal/Tests/Core/Utility/LinkGeneratorTest.php b/core/tests/Drupal/Tests/Core/Utility/LinkGeneratorTest.php index fde662c172bb8fa15175dbe00145756bdddd5e72..ae8f54e3f0e2480592b06f4481f6ddd42774dd2e 100644 --- a/core/tests/Drupal/Tests/Core/Utility/LinkGeneratorTest.php +++ b/core/tests/Drupal/Tests/Core/Utility/LinkGeneratorTest.php @@ -43,6 +43,13 @@ class LinkGeneratorTest extends UnitTestCase { */ protected $moduleHandler; + /** + * The mocked renderer service. + * + * @var \PHPUnit_Framework_MockObject_MockObject|\Drupal\Core\Render\RendererInterface + */ + protected $renderer; + /** * The mocked URL Assembler service. * @@ -68,8 +75,8 @@ protected function setUp() { $this->urlGenerator = $this->getMock('\Drupal\Core\Routing\UrlGenerator', array(), array(), '', FALSE); $this->moduleHandler = $this->getMock('Drupal\Core\Extension\ModuleHandlerInterface'); - - $this->linkGenerator = new LinkGenerator($this->urlGenerator, $this->moduleHandler); + $this->renderer = $this->getMock('\Drupal\Core\Render\RendererInterface'); + $this->linkGenerator = new LinkGenerator($this->urlGenerator, $this->moduleHandler, $this->renderer); $this->urlAssembler = $this->getMock('\Drupal\Core\Utility\UnroutedUrlAssemblerInterface'); }