Mercurial > hg > isophonics-drupal-site
diff core/lib/Drupal/Core/Link.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/Link.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,150 @@ +<?php + +namespace Drupal\Core; + +use Drupal\Core\Render\RenderableInterface; +use Drupal\Core\Routing\LinkGeneratorTrait; + +/** + * Defines an object that holds information about a link. + */ +class Link implements RenderableInterface { + + /** + * @deprecated in Drupal 8.0.x-dev, will be removed before Drupal 9.0.0. + */ + use LinkGeneratorTrait; + + /** + * The text of the link. + * + * @var string + */ + protected $text; + + /** + * The URL of the link. + * + * @var \Drupal\Core\Url + */ + protected $url; + + /** + * Constructs a new Link object. + * + * @param string $text + * The text of the link. + * @param \Drupal\Core\Url $url + * The url object. + */ + public function __construct($text, Url $url) { + $this->text = $text; + $this->url = $url; + } + + /** + * Creates a Link object from a given route name and parameters. + * + * @param string $text + * The text of the link. + * @param string $route_name + * The name of the route + * @param array $route_parameters + * (optional) An associative array of parameter names and values. + * @param array $options + * The options parameter takes exactly the same structure. + * See \Drupal\Core\Url::fromUri() for details. + * + * @return static + */ + public static function createFromRoute($text, $route_name, $route_parameters = [], $options = []) { + return new static($text, new Url($route_name, $route_parameters, $options)); + } + + /** + * Creates a Link object from a given Url object. + * + * @param string $text + * The text of the link. + * @param \Drupal\Core\Url $url + * The Url to create the link for. + * + * @return static + */ + public static function fromTextAndUrl($text, Url $url) { + return new static($text, $url); + } + + /** + * Returns the text of the link. + * + * @return string + */ + public function getText() { + return $this->text; + } + + /** + * Sets the new text of the link. + * + * @param string $text + * The new text. + * + * @return $this + */ + public function setText($text) { + $this->text = $text; + return $this; + } + + /** + * Returns the URL of the link. + * + * @return \Drupal\Core\Url + */ + public function getUrl() { + return $this->url; + } + + /** + * Sets the URL of this link. + * + * @param Url $url + * The URL object to set + * + * @return $this + */ + public function setUrl(Url $url) { + $this->url = $url; + return $this; + } + + /** + * Generates the HTML for this Link object. + * + * Do not use this method to render a link in an HTML context. In an HTML + * context, self::toRenderable() should be used so that render cache + * information is maintained. However, there might be use cases such as tests + * and non-HTML contexts where calling this method directly makes sense. + * + * @return \Drupal\Core\GeneratedLink + * The link HTML markup. + * + * @see \Drupal\Core\Link::toRenderable() + */ + public function toString() { + return $this->getLinkGenerator()->generateFromLink($this); + } + + /** + * {@inheritdoc} + */ + public function toRenderable() { + return [ + '#type' => 'link', + '#url' => $this->url, + '#title' => $this->text, + ]; + } + +}