Làm cách nào để có được URL đầy đủ của trang hiện tại?


32

Tôi cần lấy URL đầy đủ của trang hiện đang mở. Tôi sử dụng mã sau đây, nhưng nó trả về http://localhost/mysite/page_name.

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

Nó không đủ để mã của tôi hoàn thành; Tôi muốn nhận các giá trị được truyền với URL là http://localhost/mysite/page_name/value1=value&value2=value.

Làm thế nào tôi có thể làm điều đó?

Câu trả lời:


32

Bạn đã thử sử dụng request_uri () chưa?

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

Nó sẽ làm các trick. Tôi đã không thử bản thân mình và tôi có thể nghỉ một chút, nhưng tôi khuyên bạn nên thử. Từ JavaScript, bạn có thể sử dụng window.location.hrefbiến.


mẹo hay, tôi đã sử dụng $ _SERVER ['REQUEST_URI'] để lấy url nhưng khi tôi in url: sitename / pagename? field_empf_salaryfrom_tid = All & field_emp_date_value [value] [year] = & field_emp_date_ / pagename
abd

2
@abd Có lẽ bạn đang tìm kiếm$_SERVER['QUERY_STRING']
Clive

Tôi có thể đặt mọi giá trị từ url trong một biến không? Giống như giá trị của (field_empf_salaryfrom_tid = All) trong $ s
abd

Tôi đề nghị thêm giao thức vào câu trả lời vớiisset($_SERVER["HTTPS"]) ? 'https' : 'http';
augusto

request_uri()thậm chí hoạt động trên các trang 404, đó là một điều thực sự tốt.
leymannx

24

Đây là cách lấy URL tuyệt đối cho trang hiện tại, sử dụng API Drupal:

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

Nếu bạn cũng cần các tham số chuỗi truy vấn (không phải q), bạn có thể sử dụng:

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

7

Bạn có thể sử dụng mã sau đây.

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

3

Hãy thử biến $ base_url , cung cấp URL cài đặt Drupal mà không có "/" và current_path () nó trả về đường dẫn của trang hiện tại đang được xem.

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

0

Tôi nghĩ cách tốt nhất để làm điều đó là sử dụng API url () như thế này

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

Câu hỏi là yêu cầu một trang chung, không phải là một trang mà đường dẫn được biết đến.
kiamlaluno

Ok, bạn có thể thay thế your/drupal/path¡bằng current_path(), như @ david-thomas đã viết trước đây.
Roberto Peruzzo
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.