Извлечь Url и заголовок из поля ссылки в Drupal 8?
Я пытаюсь получить URL и Заголовок значения Поля ссылки в Drupal 8.
В моем пользовательском контроллере я извлекаю узлы с помощью:
$storage = \Drupal::entityManager()->getStorage('node');
$nids = $storage->getQuery()
->condition('type', 'partners')
->condition('status', 1)
->execute();
$partners = $storage->loadMultiple($nids);
Когда я пройду по всем своим узлам, чтобы предварительно обработать переменные, которые я дам своему представлению, я хотел бы получить URL и заголовок .
foreach ($partners as $key => $partner) {
$variables['partners'][] = array(
'image' => $partner->field_logo->entity->url(),
'url' => $partner->field_link->value, // Can't retrieve values of link field
);
}
К сожалению, я не нашел, как получить URL и Заголовок ссылка на поле.
Спасибо за вашу помощь.
7 answers
На уровне узла внутри шаблона ветки вы можете использовать:
{{ content.field_link.0['#url'] }}
& {{ content.field_link.0['#title'] }}
Например:
<a href="{{ content.field_link.0['#url'] }}">{{ content.field_link.0['#title'] }}</a>
field_link
это имя соответствующего поля ссылки.
Я только что нашел решение...
$partner->field_lien->uri // The url
$partner->field_lien->title // The title
Моя беда, надеюсь, это кому-нибудь поможет.
Просто чтобы вернуться к вышесказанному, если у вас есть внешняя ссылка,
$node->field_name->uri
Даст вам URL-адрес, но если он внутренний, вам может потребоваться немного больше настроек:
use Drupal\Core\Url;
$mylink = Url::fromUri($node->field_name[0]->uri);
$mylink->toString();
Обновлено для Drupal 8
Чтобы получить URL-адрес, все, что вам нужно сделать, это:
{{ content.field_link_name[0]['#url'] }}
Чтобы получить текст ссылки:
{{ content.field_link_name[0]['#title'] }}
Вы можете отобразить uri или текст поля ссылки непосредственно в шаблоне ветки. В случае узла вы можете использовать одно из следующих действий в файле шаблона twig (предполагается, что имя компьютера в вашем поле ссылки field_link
):
{{ node.field_link.uri }}
{{ node.field_link.title }}
Это работает для меня в twig:
content.field_link_name.0['#title'] // title
content.field_link_name.0['#url_title'] // url value
*вы должны использовать виджет "Разделять текст ссылки и URL" на дисплее
Я делаю это разделение ссылок для полей ECK, и это решение действительно помогло мне. Я обновил код для полей ECK для применения встроенного стиля в файле twig следующим образом:
<a style="color: {{ entity.field_link_color[0] }};" href="{{ entity.field_link[0]['#url'] }}"> {{ entity.field_link[0]['#title'] }} </a>
Чтобы получить URL-адрес:{{ entity.field_link[0]['#url'] }}
Чтобы получить заголовок ссылки: {{ entity.field_link[0]['#title'] }}