[〜#〜] url [〜#〜]とTitleの値を取得しようとしています リンクフィールド inDrupal 8。
カスタムコントローラーで、次のようにノードを取得します。
$storage = \Drupal::entityManager()->getStorage('node');
$nids = $storage->getQuery()
->condition('type', 'partners')
->condition('status', 1)
->execute();
$partners = $storage->loadMultiple($nids);
すべてのノードをループ処理して、ビューに渡す変数を前処理するために、[〜#〜] url [〜#〜]とTitleを取得したい。
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 [〜#〜]とTitle offield_link。
ご協力いただきありがとうございます。
ノードレベルで、Twigテンプレート内で使用できます:
{{ 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
は、問題のリンクフィールドの名前です。
上記に便乗するために、外部リンクがある場合は、
$node->field_name->uri
URLを提供しますが、内部URLの場合は、もう少し調整する必要があります。
use Drupal\Core\Url;
$mylink = Url::fromUri($node->field_name[0]->uri);
$mylink->toString();
私はちょうど解決策を見つけました...
$partner->field_lien->uri // The url
$partner->field_lien->title // The title
私の悪い、それが誰かを助けることができることを願っています。
twigテンプレートで、uriまたはリンクフィールドのテキストを直接レンダリングできます。ノードの場合、twigテンプレートファイル内で次のいずれかを使用できます(リンクフィールドのマシン名はfield_link
と仮定):
{{ node.field_link.uri }}
{{ node.field_link.title }}
Drupal 8で更新
URLを取得するには、次を実行するだけです。
{{ content.field_link_name[0]['#url'] }}
リンクテキストを取得するには:
{{ content.field_link_name[0]['#title'] }}
もう1つの方法は、Views FieldsでURLを取得しようとしている場合、別のフィールドPath:Contentを追加することです
これは小枝で私のために働く:
content.field_link_name.0['#title'] // title
content.field_link_name.0['#url_title'] // url value
*使用する必要があるのは、「リンクテキストとURLを分離」ウィジェットを表示することです
私はECKフィールドに対してこのリンク分離を行っていますが、このソリューションは本当に役立ちました。 twig次のようなファイルでインラインスタイルを適用するためのECKフィールドのコードを更新しました。
<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'] }}
ブロックでレンダリングした後、その中で使用されるリンクフィールドにアクセスしたい場合は、次のように使用できます。