Извлечение Url & Title из поля ссылки в Drupal 8?
Я пытаюсь получить URL-адресом и заголовок значения a ссылке поле на Drupal 8.
в моем пользовательском контроллере я получаю узлы с:
$storage = Drupal::entityManager()->getStorage('node');
$nids = $storage->getQuery()
->condition('type', 'partners')
->condition('status', 1)
->execute();
$partners = $storage->loadMultiple($nids);
когда я петлю через все мои узлы, для предварительной обработки vars я дам моему виду, я хотел бы получить 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-адресом и заголовок of field_link.
Спасибо за вашу помощь.
7 ответов
на уровне узла внутри шаблона веточки вы можете использовать:
{{ 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'] }}