В Drupal 7 вы могли использовать функцию l($text, $url, $options) для генерации HTML кода тега <A>. В Drupal 9 подход коренным образом изменился, и прямого «наследника» устаревшей функции нет.
Чтобы получить примерно тот же функционал придется задействовать пару классов из ядра. К примеру, требуется создать ссылку на сайт shra.ru.
1 2 3 4 5 |
use Drupal\Core\Url; use Drupal\Core\Link; $linkHtml = Link::fromTextAndUrl('Сайт Shra.ru', Url::fromUri('https://shra.ru')) ->toString(); |
К сожалению, если вам нужно еще и установить какие либо атрибуты ссылки, то привычно передать их через тот же метод fromTextAndUrl() — не получится. Придется немного поколдовать над рендерингом:
1 2 3 4 |
$link = Link::fromTextAndUrl('Сайт Shra.ru', Url::fromUri('https://shra.ru')) ->toRenderable(); $link['#attributes'] = ['class' => ['my-link-class'] ]; $linkHtml = render($link); |
Если же текст внутри ссылки должен содержать html код, то потребуется помощь еще одного класса —\Drupal\Core\Render\Markup.
1 2 3 4 5 6 7 |
use Drupal\Core\Url; use Drupal\Core\Link; use Drupal\Core\Render\Markup; $linkContent = Markup::create('<i>Сайт <b>Shra.ru</b></i>'); $linkHtml = Link::fromTextAndUrl($linkContent, Url::fromUri('https://shra.ru')) ->toString(); |