Làm thế nào để tôi chủ đề một liên kết?


8

Trong Drupal 7 điều này là có thể.

$link = array(
  '#type'  => 'link',
  '#title' => t('My Title'),
  '#href'  => 'node/1',
);
drupal_render($link);

Nhưng tôi đã thử điều này với Drupal 8 và nó không cho ra kết quả gì.

$link = array(
  '#type' => 'link',
  '#title' => t('test'),
  '#url' => 'node/1',
);
drupal_render($link);

Có cách nào để tôi có thể kết xuất một liên kết mà không cần phải gọi trực tiếp plugin Liên kết hoặc tạo chức năng chủ đề của riêng mình không?

Tôi đang theo chủ đề một bộ định dạng nhóm trường, phải xuất ra một mảng kết xuất.
Việc sử dụng drupal_render()bị phản đối và không nên được gọi trực tiếp; Tôi đang sử dụng nó ở đây để làm cho ví dụ của tôi rõ ràng hơn.


Trên thực tế điều này nên làm việc. Điều gì có nghĩa là không đầu ra bất cứ điều gì? Nơi nào bạn in HTML kết xuất này ?? drupal numnder () không được dùng nữa. Gọi trực tiếp cho RenderService: \ Drupal :: service ('renderer') -> render ($ yếu tố, $ is_recursive_call) Chỉ để tạo liên kết bạn cũng có thể sử dụng: Link :: fromTextAndUrl ($ text, Url $ url) Xem liên kết lớp .
rémy

Bạn muốn chủ đề gì ??
rémy

Cảm ơn câu trả lời, nhưng như đã nêu tôi không muốn gọi trực tiếp plugin Liên kết. Tôi đã cập nhật câu hỏi của mình với một chút thông tin cơ bản để hiểu kịch bản của mình.
leon.nk

Đã thêm thông tin về những gì tôi đang theo chủ đề cho câu hỏi.
leon.nk

Câu trả lời:


8

Tôi nghĩ vấn đề với mã Drupal 8 của bạn là '#url' cần một đối tượng URL.

URL bên ngoài

'#url' => Url::fromUri('https://www.drupal.org'),

URL nội bộ từ một tuyến đường

'#url' => Url::fromRoute('entity.node.canonical', ['node' => 1]),

Trong Drupal 8, bạn không được phép kết xuất chính mình. Khi chuyển mã từ Drupal 7, hãy xóa tất cả kết xuất và chỉ trả về mảng kết xuất.


Cảm ơn rất nhiều, công việc này! Có, tôi không drupal_render()trực tiếp, nó chỉ là ví dụ.
leon.nk


1

Đây là một ví dụ về cách kết xuất một liên kết trong Drupal 8 với một lớp tùy chỉnh. Hơi lạ một chút, nhưng các tùy chọn được truyền vào URL, không phải chức năng liên kết.

use Drupal\Core\Url;

$options = array('attributes' => array('class' => 'my-custom-class'));
$url = Url::fromUri('http://www.example.com', $options);
$markup = \Drupal::l(t('Link Text Goes Here!'), $url);

Điều này rất hữu ích trong một trình định dạng trường, dự kiến ​​sẽ đánh dấu lại. Nếu bạn đang làm điều này ở nơi khác, tốt nhất là chuyển đổi nó thành một mục kết xuất mảng.

use Drupal\Core\Url;

$options = array('attributes' => array('class' => 'my-custom-class'));
$build['examples_link'] = [
  '#title' => t('Link Text Goes Here!'),
  '#type' => 'link',
  '#url' => Url::fromUri('http://www.example.com', $options)
];
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.