| 7 common.inc | drupal_get_destination() |
| 4.6 common.inc | drupal_get_destination() |
| 4.7 common.inc | drupal_get_destination() |
| 5 common.inc | drupal_get_destination() |
| 6 common.inc | drupal_get_destination() |
| 8 common.inc | drupal_get_destination() |
Prepares a 'destination' URL query parameter for use with drupal_goto().
Used to direct the user back to the referring page after completing a form. By default the current URL is returned. If a destination exists in the previous request, that destination is returned. As such, a destination can persist across multiple pages.
Return value
An associative array containing the key:
- destination: The path provided via the destination query string or, if not available, the current path.
See also
Related topics
28 calls to drupal_get_destination()
- comment_admin_overview in modules/
comment/ comment.admin.inc - Form builder for the comment overview administration form.
- common_test_destination in modules/
simpletest/ tests/ common_test.module - Print destination query parameter.
- contextual_pre_render_links in modules/
contextual/ contextual.module - Build a renderable array for contextual links.
- field_ui_field_overview_form_submit in modules/
field_ui/ field_ui.admin.inc - Form submission handler for field_ui_field_overview_form().
- forum_menu_local_tasks_alter in modules/
forum/ forum.module - Implements hook_menu_local_tasks_alter().
File
- includes/
common.inc, line 525 - Common functions that many Drupal modules will need to reference.
Code
function drupal_get_destination() {
$destination = &drupal_static(__FUNCTION__);
if (isset($destination)) {
return $destination;
}
if (isset($_GET['destination'])) {
$destination = array('destination' => $_GET['destination']);
}
else {
$path = $_GET['q'];
$query = drupal_http_build_query(drupal_get_query_parameters());
if ($query != '') {
$path .= '?' . $query;
}
$destination = array('destination' => $path);
}
return $destination;
}
Comments
Works in D6 with Views, but not in D7
PermalinkI'm trying to redirect users back to a Panels page after creating a new content item, but in D7 I cannot get the proper destination. Here is the code which I insert into a view header:
<?phpglobal $base_url;
$destination = drupal_get_destination();
$url = $base_url . '/node/add/discount-product?';
print '<a class="add-new" id="add-new-discount-product" href="' . $url . $destination . '">Add new Discount Product</a>';
?>
D6 returns the destination properly, but D7 returns "Array"
drupal_get_destination()
Permalinkdrupal_get_destination() returns an array in Drupal 7, but returned a string in Drupal 6, so what you want is
<?phpprint '<a class="add-new" id="add-new-discount-product" href="' . $url . '?destination=' . $destination['destination'] . '">Add new Discount Product</a>';
?>
Really though, what you want is:
<?php$options = array(
'query' => drupal_get_destination(),
'attributes' => array(
'class' => array('add-new'),
'id' => 'add-new-discount-product',
),
);
print l(t('Add new Discount Product'), $url, $options);
?>
that's it
Permalink$destination = drupal_get_destination();
$destination = $destination['destination'];
drupal_get_origin()
PermalinkWould be nice to have a matching origin function so we can use the goto at the destination. I use:
function drupal_get_origin() {/* @var $_SERVER HTTP_REFERER works on our servers. */
$path = $_SERVER['HTTP_REFERER'];
if (isset($_GET['destination'])) {
$path = $_GET['destination'];
}
return $path;
}
re: drupal_get_origin()
Permalink@peterx HTTP_REFERER is not provided by the server. It's up to the client whether it sends this information to you so you should never rely on it's presence or assume that it will be correct.
Good point
PermalinkI haven't seen it happen often but it can.
This is from the PHP $_SERVER doc page:
HTTP_REFERER