2011-12-01 43 views
0

我在我的模塊hook_nodeapi函數中使用menu_get_object()。由於該代碼我得到以下錯誤:drupal menu_get_object錯誤

Error 324 (net::ERR_EMPTY_RESPONSE): The server closed the connection without sending any data.

的代碼如下:

function mymodule_nodeapi(&$node, $op, $a3, $a4){  
    $nodex = menu_get_object(); 
    drupal_set_message("Currnet Node(test) : {$nodex->nid}"); 
} 

誰能幫助我明白是怎麼回事,如何解決這個問題,好嗎?

回答

1

我認爲這是因爲參考hook_nodeapi()函數傳遞$node,並且您試圖使用menu_get_object()重新分配它。

您應該爲要加載的第二個節點使用不同的名稱,例如,

function mymodule_nodeapi(&$node, $op, $a3, $a4){  
    $other_node = menu_get_object(); 
    drupal_set_message("Currnet Node(test) : {$other_node->nid}"); 
} 

或者,如果你正在尋找到的nodeapi功能是指節點,只需用傳遞給函數的$node對象。

UPDATE

我認爲這會做你想做什麼:

function mymodule_nodeapi(&$node, $op, $a3, $a4){ 
    // If this call to nodeapi is for the currently visited node page 
    // $a3 contains a boolean indicating whether the view mode is teaser of full. 
    if ($op == 'view' && !$a3) { 
    drupal_set_message('Current Node : ' . $node->nid); 
    } 
} 
+0

謝謝!變量名稱肯定是一個問題,我糾正了我的代碼和上面的代碼片斷。但不幸的是,我仍然得到同樣的錯誤。該函數應該返回當前正在訪問的節點。當我嘗試使用參數列表中的$ node時,它會打印多個$ node-> nid's。例如,它們都是按視圖列出的頁面上的所有節點。 – sisko

+0

@sisko:我已經更新了答案,希望它有幫助 – Clive

+0

非常感謝你的訣竅。請問我可否誤解你的解釋?我當然不清楚函數$ a3和$ a4在參數列表中的作用。我真的很感激一個簡短的解釋。不管謝謝! – sisko