นี่คือตัวอย่างของการสร้างลิงก์ใน Drupal 8 โปรดทราบว่า $ this-> t ('some text') นั้นมีอยู่ในบล็อกที่ขยาย BlockBase หากคุณคัดลอกเหล่านี้ไปยังชั้นอื่นที่ไม่ได้มีหรือใช้เหล่านี้ในไฟล์ .module คุณอาจจำเป็นต้องเปลี่ยนนี้เพื่อตัน () 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();