是否有可能通過模塊處理_menu()中的所有通配符。_menu()中的Drupal 6絕對通配符,有可能嗎?
我知道具體的通配符像
display/page/%
但不會對路徑display/page/3/andOrderBy/Name
工作,如果我要處理的參數不可預測ammount的像
display/page/3/12/45_2/candy/yellow/bmw/turbo
我希望有一個display/*
_menu()路徑來處理所有自變量。
我該怎麼辦?
是否有可能通過模塊處理_menu()中的所有通配符。_menu()中的Drupal 6絕對通配符,有可能嗎?
我知道具體的通配符像
display/page/%
但不會對路徑display/page/3/andOrderBy/Name
工作,如果我要處理的參數不可預測ammount的像
display/page/3/12/45_2/candy/yellow/bmw/turbo
我希望有一個display/*
_menu()路徑來處理所有自變量。
我該怎麼辦?
Drupal會將任何額外的URL元素作爲附加參數傳遞給您的hook_menu
回調函數 - 在回調函數中使用func_get_args()來獲取它們。所以如果你只註冊一個通配符display/page/%
,但實際的請求有兩個額外的元素display/page/3/andOrderBy/Name
,你的回調將作爲一個顯式參數傳遞'3',而且'andOrderBy'和'Name'作爲隱含的附加元素傳遞。
例回調:
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 ...
}
啊;) 你是對的
這裏是我如何解決它。
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);
};
順便說一句,這是在Drupal標準的做法,前面加上你的模塊名稱的所有功能,以防止命名衝突,所以如果你的模塊被稱爲「MYSEARCH」,你的回調應該命名爲'mysearch_search'或'mysearch_FN_search' 。否則,向現有實例添加新模塊可能會破壞網站。 – 2009-10-02 11:40:29