Извлечь 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 и Заголовок ссылка на поле.

Спасибо за вашу помощь.

Author: mymiracl, 2015-12-28

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 это имя соответствующего поля ссылки.

 20
Author: Mark Conroy, 2017-04-04 13:32:09

Я только что нашел решение...

$partner->field_lien->uri // The url
$partner->field_lien->title // The title

Моя беда, надеюсь, это кому-нибудь поможет.

 9
Author: Kevin Wenger, 2015-12-28 19:44:50

Просто чтобы вернуться к вышесказанному, если у вас есть внешняя ссылка,

$node->field_name->uri

Даст вам URL-адрес, но если он внутренний, вам может потребоваться немного больше настроек:

use Drupal\Core\Url;

$mylink = Url::fromUri($node->field_name[0]->uri);
$mylink->toString();
 7
Author: Greg, 2016-04-19 19:27:46

Обновлено для Drupal 8

Чтобы получить URL-адрес, все, что вам нужно сделать, это:

{{ content.field_link_name[0]['#url'] }}

Чтобы получить текст ссылки:

{{ content.field_link_name[0]['#title'] }}
 1
Author: Vishal Rao, 2017-05-03 19:52:38

Вы можете отобразить uri или текст поля ссылки непосредственно в шаблоне ветки. В случае узла вы можете использовать одно из следующих действий в файле шаблона twig (предполагается, что имя компьютера в вашем поле ссылки field_link):

{{ node.field_link.uri }}

{{ node.field_link.title }} 
 1
Author: Benjen, 2018-01-02 12:03:34

Это работает для меня в twig:

content.field_link_name.0['#title']        // title
content.field_link_name.0['#url_title']    // url value

*вы должны использовать виджет "Разделять текст ссылки и URL" на дисплее

 0
Author: zanvidmar, 2017-01-04 14:06:24

Я делаю это разделение ссылок для полей 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'] }}

 0
Author: Arti Prasad, 2017-07-13 07:51:06