ฉันจะรับ URL เต็มของหน้าปัจจุบันได้อย่างไร


32

ฉันต้องได้รับ URL แบบเต็มของหน้าที่เปิดอยู่ในปัจจุบัน ฉันใช้รหัสต่อไปนี้ แต่มันกลับhttp://localhost/mysite/page_nameมา

$path = isset($_GET['q']) ? $_GET['q'] : '<front>';
$link = url($path, array('absolute' => TRUE));

รหัสของฉันไม่เพียงพอ ฉันต้องการที่จะได้รับค่าที่จะถูกส่งผ่านด้วย URL http://localhost/mysite/page_name/value1=value&value2=valueเป็น

ฉันจะทำสิ่งนั้นได้อย่างไร

คำตอบ:


32

คุณลองใช้request_uri () แล้วหรือยัง?

$_SERVER['HTTP_HOST'] . request_uri();

มันควรจะทำเคล็ดลับ ฉันไม่ได้ลองด้วยตัวเองและอาจจะออกไปสักหน่อย แต่ฉันขอแนะนำให้คุณลองดู จาก JavaScript คุณสามารถใช้window.location.hrefตัวแปรได้


เคล็ดลับที่ดีฉันใช้ $ _SERVER ['REQUEST_URI'] เพื่อรับ URL แต่เมื่อฉันพิมพ์ url: sitename / pagename? field_empf_salaryfrom_tid = ทั้งหมด & field_emp_date_value [ค่า] [ปี] = & field_emp_date_value [ค่า] [เดือน] / pagename
abd

2
@abd คุณอาจกำลังมองหา$_SERVER['QUERY_STRING']
Clive

ฉันสามารถใส่ทุกค่าจาก url ในตัวแปรได้หรือไม่? เช่นเดียวกับค่าของ (field_empf_salaryfrom_tid = ทั้งหมด) ใน $ s
อับ

ฉันขอแนะนำให้เพิ่มโพรโทคอลในคำตอบด้วยisset($_SERVER["HTTPS"]) ? 'https' : 'http';
สิงหาคม

request_uri()แม้กระทั่งบนหน้า 404 นั่นเป็นสิ่งที่ดีจริงๆ
leymannx

24

ต่อไปนี้เป็นวิธีรับ URL ที่แน่นอนสำหรับหน้าปัจจุบันโดยใช้ Drupal API:

$current_url = url(current_path(), array('absolute' => TRUE));

หากคุณต้องการพารามิเตอร์การสืบค้นพิเศษ (ไม่ใช่คิว) เช่นกันคุณสามารถใช้:

$current_url = url(current_path(), array('absolute' => TRUE, 
                                         'query' => drupal_get_query_parameters()));

7

คุณสามารถใช้รหัสต่อไปนี้

global $base_root;
$current_url = $base_root . request_uri();
echo $current_url;

3

ลองใช้ตัวแปร$ base_urlแสดง URL การติดตั้ง Drupal โดยไม่มี "/" และcurrent_path () ซึ่งจะส่งคืนพา ธ ของหน้าปัจจุบันที่กำลังดูอยู่

global $base_url;
$current_path = $base_url . '/' . current_path();

0

ฉันคิดว่าวิธีที่ดีที่สุดคือใช้ url () API เช่นนี้

url('your/drupal/path', array('absolute' => TRUE));

คำถามกำลังขอหน้าทั่วไปไม่ใช่ที่รู้จักกันในเส้นทาง
kiamlaluno

ตกลงคุณสามารถแทนที่your/drupal/path¡ด้วยcurrent_path()ตามที่ @ david-thomas เขียนไว้ก่อนหน้านี้
Roberto Peruzzo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.