2015-12-28 17 views
9

Ich versuche, die URL und die Titel Werte eines Link field in Drupal 8 abzurufen.URL und Titel aus dem Linkfeld in Drupal 8 extrahieren?

In meiner benutzerdefinierten Controller, rufe ich die Knoten mit:

$storage = \Drupal::entityManager()->getStorage('node'); 
$nids = $storage->getQuery() 
    ->condition('type', 'partners') 
    ->condition('status', 1) 
    ->execute(); 

$partners = $storage->loadMultiple($nids); 

Wenn ich Schleife Throught alle meine Knoten, vorverarbeitet Vars ich meiner Meinung nach geben werde, würde Ich mag die URL abzurufen und der Titel.

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 
    ); 
} 

Leider habe ich nicht gefunden, wie die URL und die von field_link Titel zurückzuholen.

Danke für Ihre Hilfe.

Antwort

16

auf Knotenebene, in Ihrem Zweig-Vorlage können Sie:

{{ content.field_link.0['#url'] }} & {{ content.field_link.0['#title'] }}

Zum Beispiel:

<a href="{{ content.field_link.0['#url'] }}">{{ content.field_link.0['#title'] }}</a>

field_link ist der Name des Link-Feld in Frage.

+0

Ich habe 'views-view-fields.html.twig' überschrieben, wo ich den' URL'-Teil aus 'title' extrahieren und einem separaten Link zuweisen möchte. Ich habe zwei wilde Gueses ausprobiert: '{{fields.title.content.0 ['# url']}}' und '{{fields.title.content ['# url']}}'. Aber keiner von denen hat funktioniert :) Wie kann ich das machen? –

+0

Ich glaube, Sie müssen das Feld '| rendern ', das scheint für mich zu funktionieren:' {{fields.title.content.0 [' # url '] | render}} ', um die tatsächliche URL zu erhalten – bdanin

5

Ich habe gerade die Lösung ...

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

Meine schlecht, hoffen, dass es jemand helfen könnte.

+1

Wie kann ich Syntax URI Zweig? –

+1

@FredK Für Zweig: '$ partner.field_lien.uri' – Andrea

+3

+1, aber wie zum Teufel erreichen Sie diese Informationen? Gibt es eine Dokumentation, wo ich eine Auflistung jedes Attributs für jeden Feldtyp finden kann. Beispiel: link> uri/title/..., text> Wert? –

4

einfach auf den oben huckepack, wenn Sie einen externen Link haben,

$node->field_name->uri 

Sie die URL geben, aber wenn es eine interne ist müssen Sie möglicherweise ein bisschen mehr zwicken:

use Drupal\Core\Url; 

$mylink = Url::fromUri($node->field_name[0]->uri); 
$mylink->toString(); 
+1

Danke für Ihren Beitrag. In der Tat können Sie die direkte URL mit ** $ Knoten-> Feldname-> Entity-> URL(); ** Ich hoffe, ich helfe Ihnen. –

0

Dies funktioniert für mich in Zweig:

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

* Sie verwenden sollen: "Separate Linktext und URL" Widget in Display

Um die URL

1

Aktualisiert für Drupal 8 alles, was Sie tun müssen, ist:

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

den Linktext zu erhalten:

0

Ich mache diese Linktrennung für ECK-Felder und diese Lösung hat mir wirklich geholfen.Ich habe den Code für ECK Felder aktualisiert in Zweig-Datei wie folgt Inline-Stil anwenden:

<a style="color: {{ entity.field_link_color[0] }};" href="{{ entity.field_link[0]['#url'] }}"> {{ entity.field_link[0]['#title'] }} </a>

url Um:
{{ entity.field_link[0]['#url'] }}

Um einen Link Titel zu erhalten:
{{ entity.field_link[0]['#title'] }}

0

Sie können entweder die URL oder den Text eines Linkfeldes direkt in der Zweigvorlage rendern. Im Falle eines Knotens Sie eine der folgenden in der Zweig Vorlagendatei verwenden können (übernimmt die Computernamen der Link-Feld ist field_link):

{{ node.field_link.uri }} 

{{ node.field_link.title }}