hehe, đây là shit về nhận URL từ trường (Twig phiên bản của nhận rằng URL)
Nếu bạn muốn URL (và tiêu đề) đó là trong một lĩnh vực mà bạn có để có được đối tượng của lớp: Drupal \ lõi \ Url
Nếu bạn có các nút bằng drupal_entity (Twig Tweaks) sau đó bạn có: (tôi sẽ sử dụng "tab" như nút đó) . Tab [ '# nút'] field_link
này mang đến cho bạn bằng cách sử dụng:
tab [ '# nút'] field_link..uri -> URI (URI không phải là URL)
tab [ '# nút'] field_link.title -.> tiêu đề
nhưng, đó không phải là kết thúc.
nó tốt hơn để acess Drupal \ liên kết \ Plugin \ Dòng \ FieldType \ LinkItem bởi:.
tab [ '# nút'] field_link.get (0)
tab [ '#node'] field_link [0]
(cả hai làm tương tự)
sau đó bạn có thể truy cập những gì thú vị nhất:.
tab ['# nút']. Field_tab_link [0] .getUrl() một đối tượng Drupal \ Core \ Url.
Bạn có thể truy cập vào đối tượng này cũng bằng cách sử dụng dòng này bên dưới, từ bên trong đó là nút mẫu file: content.field_link [0] [ '# url'] (đây cũng là Drupal \ Lõi \ đối tượng Url)
đối tượng đó có phương pháp:
- isExternal() -> là liên kết với bên ngoài (ví dụ http://cnn.com.)
- isRouted() -> được liên kết đến bên trong trang web của bạn
- getRouteName() -> Tên của tuyến đường
- getRouteParameters() -> mang đến cho bạn một mảng các giá trị, đây (chúng tôi lấy ID của nút đó), bạn sẽ phải [ 'nút' => ID]
bạn nên sử dụng nó như thế:
{% set tabURL = tab['#node'].field_link[0].getUrl() %}
{% if tabURL.isExternal() %}
{% set link_path = tab['#node'].field_tab_link.uri %}
{% elseif tabURL.isRouted() %}
{% set link_path = path(tabURL.getRouteName(), tabURL.getRouteParameters()) %} {# /node/12 #}
{% endif %}
điều này đã làm cho tôi. cảm ơn vì đoạn trích! nếu một bí danh được định nghĩa tôi có được bí danh, nếu không tôi nhận được liên kết với .../node/id. – Nicensin
Bạn có thể giải thích cách sử dụng nó không? Tôi đã thay đổi/thêm mã ở đâu? Trong chủ đề> tiền xử lý? Url.php hoặc Core? Thật khó để tìm câu trả lời toàn cầu khi chúng tôi bắt đầu Drupal .. –
@PaulLeclerc Bạn không bao giờ nên thay đổi thứ gì đó trong lõi giống như một lưu ý chung. Bạn có thể sử dụng các ví dụ mã ở trên bất cứ nơi nào bạn cần. Nó hoạt động trong mọi tập tin mà bạn có thể sử dụng php. Chúng tôi rõ ràng không thể trả lời câu hỏi này cho bạn vì chúng tôi không biết bạn muốn làm gì. – Nicensin