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,
+    ];
+  }
+
+}