ฉันมีฟิลด์ลิงค์ชื่อfield_my_link
(ชื่อเครื่อง)
ภายในเทมเพลต Twig ฉันจะได้รับค่า URL ของลิงค์ด้วย:
{{ node.field_my_link.uri }}
หากภายใน URL ของลิงก์มีURL ภายนอกเช่นhttp://example.com
ทำงานได้ดี
แต่หากภายใน URL ของลิงก์มีการจัดเก็บURL ภายในเช่น"/node/11"
ฉันได้รับค่าเช่นนี้:
"internal:/node/11"
ด้วยinternal:
คำนำหน้า ""
ฉันจะรับURL ที่ถูกต้องได้อย่างไร
ตัวอย่างเช่นหาก URL ของลิงก์คือ " http://example.com
" ฉันต้องการ " http://example.com
" (ใช้งานได้แล้ว) หาก URL ของลิงก์คือ " /node/11
" ฉันต้องการ URL สัมพัทธ์ " /node/11
" หาก URL ของลิงก์คือ " <front>
" ฉันต้องการ URL " /
" ฯลฯ .
แก้ไข
ฉันสามารถรับค่าที่ฉันต้องการภายในฟังก์ชั่น preprocess PHP โดยใช้สิ่งนี้:
$url = $variables['node']->get('field_my_link')->first()->getUrl();
ฉันจะเข้าถึงค่าเดียวกันภายในแม่แบบ Twig ได้อย่างไร
ฉันรู้ว่าฉันสามารถทำได้ภายในฟังก์ชัน preprocess:
$variables['my_url'] = $url;
จากนั้นเข้าถึง url ภายใน Twig โดยใช้{{ my_url }}
แต่ฉันจะหลีกเลี่ยงการเขียนฟังก์ชั่น preprocess ทุกครั้งที่ฉันมีลิงค์ฟิลด์
node.field_my_link.uri
เป็น URL ภายนอกเช่นhttp://www.example.com
?