我有一个加载函数,每当用户访问页面时都会调用过多的加载函数。当然,我只需要它每页请求运行一次,而不是多次调用它。之前,_load()只用了两次MENU_CALLBACK,然后我用默认的MENU_NORMAL_ITEM测试了它,它增加到了四。尽管我已将其更改回来并清除了缓存,但它现在仍运行四次,我只希望它运行一次。多次调用通配符加载函数(_load)
我的问题是,为什么我的加载函数被多次调用?任何有识之士将不胜感激。
$items['daycare/%isValid/home'] = array(
'title' => 'Daycare Admin Home',
'page callback' => 'daycares_home_page',
'load arguments' => array(0),//Passes 1st part of url 'daycare' as 2nd arg
'page arguments' => array(0),
'access arguments' => array('access content'),
'type' => MENU_CALLBACK,
);
function isValid_load($pageID, $pageType){
/*Do stuff to validate wildcard part of URL. Will throw 404/403 if invalid*/
return $pageId;
}
您的回答仍然非常有帮助!谢谢Nmc。我要尝试使用回溯。就这一点而言,我并不太在乎表现。我将在_load()中处理的操作是相当简单的查询。尽管如此,我已经将该文章加入书签以供将来使用。 :) – SFox 2012-08-05 17:59:08
另一种选择是配置xdebug并通过调试器推送代码,虽然有时配置可能有点棘手。然后,您可以在通配符加载器上添加一个断点,检查值,查看调用堆栈等。 – iainp999 2012-08-06 10:45:07