Reputation: 2040
is it possible to handle all wildcards in _menu() by module.
I know about specific wildcards like
display/page/%
but that won't work for paths display/page/3/andOrderBy/Name
what If I want to handle unpredicted ammount of parameters like
display/page/3/12/45_2/candy/yellow/bmw/turbo
I want to have one display/*
_menu() path to handle all ARGUMENTS.
how can I do it ?
Upvotes: 3
Views: 1416
Reputation: 2040
ah ;) you were right
here is how i solved it.
function mysearch_menu() {
$items['mysearch/%'] = array(
'page callback' => 'FN_search',
'access callback' => TRUE,
);
return $items;
}
function FN_search()
{
return print_r(func_get_args(),true);
};
Upvotes: 0
Reputation: 19441
Drupal will pass any additional URL elements as additional parameters to your hook_menu
callback function - use func_get_args() in your callback to get them.
So if you register only one wildcard display/page/%
, but the actual request has two additional elements display/page/3/andOrderBy/Name
, your callback will be passed '3' as an explicit parameter, but also 'andOrderBy' and 'Name' as implicit additional ones.
Example callback:
function yourModuleName_display_callback($page_number) {
// Grab additional arguments
$additional_args = func_get_args();
// Remove first one, as we already got it explicitely as $page_number
array_shift($additional_args);
// Check for additional args
if (!empty($additional_args)) {
// Do something with the other arguments ...
}
// other stuff ...
}
Upvotes: 3