다음은 Drupal 8에서 링크를 생성하는 몇 가지 예입니다. $ this-> t ( 'some text')는 BlockBase를 확장하는 블록 내에서 사용할 수 있습니다. 이것을 가지고 있지 않은 다른 클래스에 복사하거나 .module 파일에서 사용하는 경우 이것을 t () 1 로 변경해야 할 수도 있습니다 .
노드에 대한 기본 링크 :
$node = Node::load($nid);
$build['node_link'] = $node->toLink()->toRenderable();
이것은 다음과 같은 렌더 배열을 만듭니다 :
$link = [
'#type' => 'link',
'#url' => $url_object,
'#title' => 'Title of Node',
];
이 방법으로 노드를로드하지 않고 렌더 배열을 만들 수 있습니다.
$url_object = Url::fromRoute('entity.node.canonical', ['node' => $nid]);
$link = [
'#type' => 'link',
'#url' => $url_object,
'#title' => $this->t('Read More'),
];
또는 핵심 링크 클래스를 사용하십시오.
$url = Url::fromRoute('entity.node.canonical', ['node' => $nid]);
$link = Link::fromTextAndUrl($this->t('Read more'), $url);
$build['read_more'] = $link->toRenderable();
링크 텍스트에 마크 업을 사용하려면 문자열을 넣을 수 없습니다. 렌더 배열 요소를 사용해야합니다.
$url = Url::fromRoute('entity.node.canonical', ['node' => $nid]);
$link_text = [
'#type' => 'html_tag',
'#tag' => 'span',
'#value' => $this->t('Load More'),
];
$link = Link::fromTextAndUrl($link_text, $url);
절대 링크를 만들려면이 옵션을 링크가 아닌 URL에 추가하십시오.
$url = Url::fromRoute('entity.node.canonical', ['node' => $nid], ['absolute' => TRUE]);
$link = Link::fromTextAndUrl($this->t('Read more'), $url);
$build['read_more'] = $link->toRenderable();
링크에 클래스를 추가하려면 링크가 아닌 URL에 클래스를 추가해야합니다.
$options = [
'attributes' => [
'class' => [
'read-more-link',
],
],
];
$url = Url::fromRoute('entity.node.canonical', ['node' => $nid], $options);
$link = Link::fromTextAndUrl($this->t('Read more'), $url);
$build['read_more'] = $link->toRenderable();
링크에 쿼리 문자열을 추가하려면 링크가 아닌 URL에 쿼리 문자열을 추가해야합니다.
$options = [
'query' => [
'car' => 'BMW',
'model' => 'mini-cooper',
],
'attributes' => [
'class' => [
'read-more-link',
],
],
];
$url = Url::fromRoute('entity.node.canonical', ['node' => $nid], $options);
$link = Link::fromTextAndUrl($this->t('Read more'), $url);
$build['read_more'] = $link->toRenderable();
target = _blank를 사용하여 새 창에서 링크가 열리도록 설정하려면 :
$options = [
'attributes' => [
'target' => '_blank'
],
];
$url = Url::fromRoute('entity.media.edit_form', ['media' => $entity->id()], $options);
$link = Link::fromTextAndUrl(t('Edit'), $url);
$form['entity']['edit_link'] = $link->toRenderable();
분류 용어 페이지에 대한 링크는 다음과 같습니다.
$url = Url::fromRoute('entity.taxonomy_term.canonical', ['taxonomy_term' => $tid]);
$link = Link::fromTextAndUrl($this->t('Read more'), $url);
$build['read_more'] = $link->toRenderable();
다음은 노드 편집 페이지에 대한 링크입니다.
$url = Url::fromRoute('entity.node.edit_form', ['node' => $nid]);
$link = Link::fromTextAndUrl($this->t('Edit'), $url);
$build['read_more'] = $link->toRenderable();
외부 링크를 만들려면
$url = Url::fromUri('http://www.example.com/');
$link = Link::fromTextAndUrl($this->t('Vist this example site'), $url);
$build['external_link'] = $link->toRenderable();
홈페이지 링크 :
$url = Url::fromRoute('<front>');
$link = Link::fromTextAndUrl($this->t('Home'), $url);
$build['homepage_link'] = $link->toRenderable();
이 url 객체 중 하나에서 다음을 호출하여 url을 문자열로 가져올 수 있습니다.
$url->toString();
예를 들면 다음과 같습니다.
$url_string = Url::fromRoute('<front>')->toString();